java.lang.reflect.Array 类,用于反射操纵数组,Array 类中的所有方法都是静态的

    检查某个类的类型是否是数组:Class 类中的 isArray() 方法

    1. // 创建对象
    2. Object o = Array.newInstance(int.class, 3);
    3. boolean isArray = o.getClass().isArray; // 返回true

    创建数组对象:Array.newInstance

    • Object newInstance(Class<?> componentType, int arrayLength):根据指定类型和数组长度创建数组
    • Object newInstance(Class<?> componentType, int… dimensions):根据指定类型和多维数组每维度的长度创建数组
      1. // 创建一个长度为5的int数组
      2. int[] ints = (int[])Array.newInstance(int.class, 5);
      3. // 创建一个维度为5*3的字符串数组
      4. String[][] strs = (String[][])Array.newInstance(String.class, 5, 3);

    获取数组的长度:Array.getLength(Object o)

    1. // 创建数组
    2. Object o = Array.newInstance(int.class, 5);
    3. // 获取数组的长度
    4. int len = Array.getLength(o);

    往数组中填充和获取元素:

    • 填充数组元素:Array.set(Object array, int index, Object value) 和 一系列填充基本元素类型的方法,如 Array.setInt()、Array.setBoolean()
    • 获取数组元素:Object get(Object array, int index) 和一系列的获取基本元素类型的方法,如 Array.getInt()、Array.getBoolean()
      1. Object o = Array.newInstance(int.class, 5);
      2. // 元素填充
      3. for (int i = 0; i < Array.getLength(o); i++) {
      4. Array.set(o, i, i);
      5. }
      6. // 元素获取
      7. for (int i = 0; i < Array.getLength(o); i++) {
      8. System.out.println(Array.getInt(o, i));
      9. }

    获取数组的维度:

    • Class.isArray() 方法能够判断 Class 是否为 Array 对象
    • Class.getComponentType() 方法能够返回数组的元素类型的 Class 对象
      1. public static int getArrayDimension(Object arr){
      2. int dimension = 0;
      3. Class<?> clazz = arr.getClass();
      4. if (!clazz.isArray()){
      5. throw new IllegalArgumentException("Object is not a Array!");
      6. }
      7. while (clazz.isArray()){
      8. dimension++;
      9. clazz = clazz.getComponentType();
      10. }
      11. return dimension;
      12. }

    对多维数组进行操作:

    1. public static void binaryArray(){
    2. Object o = Array.newInstance(int.class, 2, 2);
    3. // 获取二维数组中的索引0上的一维数组
    4. Object o1 = Array.get(o, 0);
    5. // 给二维数组索引0的一维数组赋值
    6. Array.set(o1, 0, 13);
    7. Array.set(o1, 1, 23);
    8. // 获取元素上的值
    9. System.out.println(Array.get(o1, 0)); // 13
    10. System.out.println(Array.get(o1, 1)); // 23
    11. }