跟王老师学反射:使用反射操作数组

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了跟王老师学反射:使用反射操作数组相关的知识,希望对你有一定的参考价值。

跟王老师学反射(八):使用反射操作数组

主讲教师:王少华   QQ群号:483773664

学习内容

使用反射操作数组

在java.lang.reflect包下还提供了一个Array类,Array对象可以代表所有的数组。程序可以通过使用Array来动态创建数组。

一、传统的创建数组的方法

1
2
3
4
5
6
7
8
public   static   void  main(String[] args)  {
       int vec[] = new int[]{1, 5, 3};  // 第一种方法         
       int  vec[]  =  { 37 47 23 } ;   // 第二种方法 
  
      int vec[] = new int [3];
      for(int i=0;i<3;i++)
       vec[i]=i+1;           //第三种方法
}

二、Array提供的方法

(一)、public static Object newInstance(Class<?> componentType, int length)

创建一个具有指定的元素类型、指定维度的新数组

(二)public static Xxx getXxx(Object array, int index)

返回array数组中第index个元素,其中xxx是各种基本数据类型。如果数组元素是引用类型,则该方法变为get(Object array,int index)

(三)public static void setXxx(Object array, int index, Object value)

将array数组中第index元素的值设为val.其中xxx是各种基本数据类型。如果数组元素是引用类型,则该方法变为set(Object array,int index,Object val)

二、演示

(一)利用Array操作一组数组

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
public class ArrayTest1 {
    public static void main(String[] args) {
        try {
            //创建一个元素类型为String ,长度为10的数组
            Object arr = Array.newInstance(String.class, 10);
            //依次向arr数组中index = 5,6的元素赋值
            Array.set(arr, 5, "zhangsan");
            Array.set(arr, 6, "leisi");
            //依次取出arr数组中index=5、6的元素值,并打印输出
            System.out.println(Array.get(arr, 5));
            System.out.println(Array.get(arr, 6));
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

(二)利用Array类操作二维数组

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
public class ArrayTest2 {
    public static void main(String[] args) {
        /**
         * 创建一个二维数组
         * 二维数组,可以理解二个一维数组
         */
        Object array = Array.newInstance(String.class, 3,4);
        //获取array数组中的index为2的元素,这是一个一维数组
        Object arr = Array.get(array, 2);
        //为arr赋值
        Array.set(arr, 0, "zhangsan");
        Array.set(arr, 1, "lisi");
        Array.set(arr, 2, "wangwu");
        Array.set(arr, 3, "zhaoliu");
        //取值
        System.out.println(Array.get(arr, 2));
    }
}

技术分享







以上是关于跟王老师学反射:使用反射操作数组的主要内容,如果未能解决你的问题,请参考以下文章

跟王老师学反射:使用反射调用方法

跟王老师学反射使用反射调用属性

跟王老师学反射:反射应用小案例--进行对象拷贝

跟王老师学反射:动态代理

跟王老师学反射:Class类:获得Class对象

跟王老师学反射:反射概述