Java中关于数组的反射:
1.准备知识:首先要知道数组是一种类型,根据定义当两个数组具有相同的类型和相同的维度时则这两个数组是同一种类型。
<pre name="code" class="html">int[] a=new int[3];
int[] a4=new int[5];
String[] a3=new String[]{"hello","jdfsa"};
System.out.println(a.getClass()==a4.getClass());
System.out.println(a.getClass().getSuperclass());
System.out.println(a3.getClass().getSuperclass());
其结果为:true
class java.lang.Object
class java.lang.Object
从结果可知数组的类型具有相同的父类Object,如下代码
int[] a=new int[3];
int[] a4=new int[5];
String[] a3=new String[]{"hello","jdfsa"};
int[][] a1=new int[][]{{1,3},{5,9,10}};
Object o1=a;//正确
Object o2=a1;//正确
// Object[] o3=a;//错误
Object[] o4=a1;//正确
2.数组的反射工具类Array(来自java.lang.refect包)主要的使用方法为:
1.get(Object obj,int index)得到某个对象对应索引位置的数据
getxxx(Object obj,int index)得到obj对象中具体的数据
2.getLength()动态返回数组的长度
3.set(Object obj,int index)设置obj对象中的具体索引位置的值
setxxxx(Object obj,int index)设置obj对象中某个索引具体的值
4.newInstance(Class<?> calzz,int lenghh/int demesion)动态的创建具体类型和维度或具体类型和长度的数组
下面的例子是根据object对象的不同来打印数据
private static void printData(Object obj) {
Class clazz=obj.getClass();
if(clazz.isArray())
{
int len=Array.getLength(obj);
for(int i=0;i<len;i++)
sop(Array.get(obj, i));
}
else
{
sop(obj);
}
}