1.数组反射的类是Array类
Array类有如下继承关系:
java.lang.Object
|--java.lang.reflect.Array
2.Array类提供了静态方法来动态的创建和存取java数组。
3.Array允许在get或者set操作时发生宽转换,但是如果窄转换发生时会抛出IllegalArgumentException异常
4.介绍几个重要的方法
首先是两个用反射方式创建数组的方法,Array中的方法都是静态方法。一个用来创建一维数组,另一个用来创建多维数组。
static Object newInstance(Class<?> componentType, int length):创建新的一维数组,元素的类型为第一个参数,一维数组的长度为第二个参数。
static Object newInstance(Class<?> componentType, int... dimensions):创建多维数组,第二个参数可以有多个,每一个代表一个维度的大小。
用反射方式获取数组长度的函数:
static int getLength(Object array):传入的是数组对象
get和set方法,用于获取数组中的值和设置数组中的值:
static void set(Object array, int index, Object value):二维数组的设置方法请看下面例子。
static Object get(Object array, int index):二维数组的获取方法请看下面例子。
5.使用示例
- int[] i1 = (int[]) Array.newInstance(int.class, 10);// 用反射的方式创建一维数组
- int len = Array.getLength(i1);// 静态方法获取数组的长度
- for(int x= 0;x<len;x++)
- {
- Array.set(i1, x, x);//使用set方法设置数组元素
- }
- for (int i = 0; i < len; i++)// 打印
- {
- System.out.format("%1$5d\n",Array.get(i1, i));// 反射获取数组中的每个元素
- }
- System.out.println("--------------I am split line.-------------");
- int[][] i2 = (int[][]) Array.newInstance(int.class, 6, 8);// 用反射的方式创建二维数组
- int h = Array.getLength(i2);// 静态方法获取数组一维长度
- int l = Array.getLength(i2[0]);// 静态方法获取数组的二维长度
- int inc =0;
- for(int p=0;p<h;p++)
- {
- for(int q=0;q<l;q++)
- {
- Array.set(i2[p], q,inc++);//反射的方式设置二维数组
- }
-
- }
- for (int i = 0; i < h; i++)// 打印
- {
- for (int j = 0; j < l; j++)
- {
- System.out.format("%1$5d",Array.get(Array.get(i2, i),j));// 反射获取数组中的每个元素,嵌套的get,
- //先获取到二维数组中的一维数组,在获取到一维中的元素。
- }
- System.out.println();
- }
复制代码
|
|