使用反射操作Array类型
使用反射操作Array类型:
a):
Class<?> classType = Class.forName("java.lang.String");
Object array = Array.newInstance(classType, 10);
Array.set(array, 5, "hello");
String str = (String)Array.get(array, 5);
System.out.println(str);
b):
public class ArrayTester2
{
public static void main(String[] args)
{
int[] dims = new int[] { 5, 10, 15 };
Object array = Array.newInstance(Integer.TYPE, dims);//dims为创建的新数组的维度(这里是一个三维数组5,10,15)
System.out.println(array instanceof int[][][]);//检查一下是不是三维数组
Object arrayObj = Array.get(array, 3);//arrayObj是一个二维数组(三维数组的第3个)
arrayObj = Array.get(arrayObj, 5);//arrayObj是一个一维数组(二维数组的第5个)
Array.setInt(arrayObj, 10, 37);//a为一维数组的第10位赋值为37.
int[][][] arrayCast = (int[][][]) array;
System.out.println(arrayCast[3][5][10]);
System.out.println(Integer.TYPE);
System.out.println(Integer.class);
}
}
另:Integer.TYPE 返回的是 int,而Integer .class返回的是 Integer 类所对应的Class对象。
本文为<北京圣思园Java培训教学视频Java.SE 反射机制大总结>视频笔记