数组的反射
- 具有相同维数和元素类型的数组属于同一个类型,即相同的Class对象
- 代表数组的Class实例对象的getSuperClass()方法返回的父类为object类对应的Class
- 基本类型的一维数组可以被当作object类型使用,不能当作Object[]类型使用,非基本类型的一维数组,既可以当Object类型使用,又可以当Object[]类型使用。
//JDK1.6 Arrays
public static <T> List<T> asList(T... a)
//JDK 1.4
public static List asList(Object[] a)
- Arrays.asList()方法处理int[] 和Integer[]差异
@Test
public void arraysReflectTest() {
int [] inArr= {3,5,7,8};
Integer [] inArr2= {3,5,7,8};
System.out.println(Arrays.asList(inArr));
System.out.println(Arrays.asList(inArr2));
}
结果:
- 利用Array工具完成对数组的反射操作
@Test
public void arraysReflectTest() {
int [] inArr= {3,5,7,8};
Integer [] inArr2= {3,5,7,8};
System.out.println(Arrays.asList(inArr));
System.out.println(Arrays.asList(inArr2));
printArray(inArr);
printArray(inArr2);
}
public void printArray(Object object)
{
Class clazz = object.getClass();
if(clazz.isArray()) {//判断是否为数组
//得到数组的长度
int len=Array.getLength(object);
for(int i=0;i<len;i++)
{
System.out.print(Array.get(object, i)+"\t");
}
System.out.println();
}else
{
System.out.println(object);
}
}