黑马程序员技术交流社区
标题:
干货,数组反射,给你不一样的体验!速来围观
[打印本页]
作者:
Morgan
时间:
2015-7-6 20:09
标题:
干货,数组反射,给你不一样的体验!速来围观
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();
}
复制代码
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2