zoukankan      html  css  js  c++  java
  • 反射学习4-通过反射机制动态创建和访问数组

    一、前言
    java.lang.reflect.Array类提供了动态创建和访问数组元素的各种静态方法。

    static Object
       newInstance(Class<?> componentType, int... dimensions)
    创建一个具有指定的组件类型和维度的新数组。componentType:组件类型,Java中将数组的数组也就是二维数组当做一个组件。

    static Object
    get(Object array, int index)
    返回指定数组对象中索引组件的值。

    static void
    set(Object array, int index, Object value)
    将指定数组对象中索引组件的值设置为指定的新值。

    二、以下是几个Array的实例

       调用Array的newInstance()方法创建数组:

    一维数组:

    Class classType = Class.forName("java.lang.String");
    Object array = Array.newInstance(classType, 10);

    多维数组:

    Class classType = Class.forName("java.lang.String");
    int[] dimension = new int[]{10,10,10};
    Object array2_3d = Array.newInstance(classType, dimension);

    调用Array的get()方法获取数组的值:

    一维数组:

    System.out.println((String)Array.get(array, 1));

    多维数组:

    Class classType = Class.forName("java.lang.String");
    int[] dimension = new int[]{10,10,10};
    Object array2_3d = Array.newInstance(classType, dimension);
    //获取三维数组的第一个数组组件array2Obj,是一个二维数组
    Object array2Obj_2d = Array.get(array2, 1);
    //获取array2Obj_2的第二个数组组件,是一个一维数组
    Object array2Obj_1d = Array.get(array2Obj_2d, 2);

    调用Array的set()方法设置数组的值:

    一维数组:

    Array.set(array, 1, "arthinking");

    多维数组:

    Array.set(array2Obj_1d, 3, "arthinking");

    完整代码如下
    一维数组,创建一个一维数组并设置第一个元素的值:

    Class classType = Class.forName("java.lang.String");
    Object array = Array.newInstance(classType, 10);
    Array.set(array, 1, "arthinking");
    System.out.println((String)Array.get(array, 1));

    多维数组,创建一个三维数组并设置元素array[1][2][3]的值:

    Class classType = Class.forName("java.lang.String");
    int[] dimension = new int[]{10,10,10};
    Object array2_3d = Array.newInstance(classType, dimension);
    //获取三维数组的第一个数组组件array2Obj,是一个二维数组
    Object array2Obj_2d = Array.get(array2_3d, 1);
    //获取array2Obj_2的第二个数组组件,是一个一维数组
    Object array2Obj_1d = Array.get(array2Obj_2d, 2);
    //设置array2Obj_1的第三个元素的值
    Array.set(array2Obj_1d, 3, "arthinking");
    //从三维数组array2中获取刚才设置的值
    System.out.println(((String[][][])array2_3d)[1][2][3]);

    //获取array2Obj_2d的组件类型
    Class<?> classType2 = array2Obj_2d.getClass().getComponentType();

  • 相关阅读:
    java一个字符串中出现次数最多的字符以及次数
    按要求分解字符串,输入两个数M,N;M代表输入的M串字符串,N代表输出的每串字符串的位数,不够补0。例如:输入2,8, “abc” ,“123456789”,则输出为“abc00000”,“12345678“,”90000000”
    Java 替换空格
    Java中equals()和“==”区别
    ramfs和tmpfs的区别
    C语言中的nan和inf使用
    Abp中SwaggerUI的多个接口文档配置说明
    Abp中SwaggerUI的接口说明文档配置
    Abp中SwaggerUI的接口文档添加上传文件参数类型
    Abp中自定义Exception的HttpStatusCode
  • 原文地址:https://www.cnblogs.com/kabi/p/5182828.html
Copyright © 2011-2022 走看看