A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

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.使用示例
  1. int[] i1 = (int[]) Array.newInstance(int.class, 10);// 用反射的方式创建一维数组
  2.                 int len = Array.getLength(i1);// 静态方法获取数组的长度
  3.                 for(int x= 0;x<len;x++)
  4.                 {
  5.                         Array.set(i1, x, x);//使用set方法设置数组元素
  6.                 }
  7.                 for (int i = 0; i < len; i++)// 打印
  8.                 {
  9.                         System.out.format("%1$5d\n",Array.get(i1, i));// 反射获取数组中的每个元素
  10.                 }
  11.                 System.out.println("--------------I am split line.-------------");
  12.                 int[][] i2 = (int[][]) Array.newInstance(int.class, 6, 8);// 用反射的方式创建二维数组
  13.                 int h = Array.getLength(i2);// 静态方法获取数组一维长度
  14.                 int l = Array.getLength(i2[0]);// 静态方法获取数组的二维长度
  15.                 int inc =0;
  16.                 for(int p=0;p<h;p++)
  17.                 {
  18.                         for(int q=0;q<l;q++)
  19.                         {
  20.                                 Array.set(i2[p], q,inc++);//反射的方式设置二维数组
  21.                         }
  22.                        
  23.                 }
  24.                 for (int i = 0; i < h; i++)// 打印
  25.                 {
  26.                         for (int j = 0; j < l; j++)
  27.                         {
  28.                                 System.out.format("%1$5d",Array.get(Array.get(i2, i),j));// 反射获取数组中的每个元素,嵌套的get,
  29.                                                                                                                                 //先获取到二维数组中的一维数组,在获取到一维中的元素。
  30.                         }
  31.                         System.out.println();
  32.                 }
复制代码




0 个回复

您需要登录后才可以回帖 登录 | 加入黑马