使用反射创建一维数组和二维数组

package com.iotek.classtype;

import java.lang.reflect.Array;

public class ReflectionArrayDemo {
  public static void main(String[] args) throws Exception {
    /*//创建一维数组(String)
     Class<?> class1=Class.forName("java.lang.String");
     Object array=Array.newInstance(class1, 5);
     Array.set(array, 3, "ABC");
     System.out.println(Array.get(array, 3));*/
     //创建二维数组(3行3列)
     int [] dimens= {3,3};
     Object array=Array.newInstance(int.class, dimens);
     Object object=Array.get(array, 2);//获取第三行(就是一个一维数组)
     Array.setInt(object, 2,10 );//给指定数组位置的元素赋上新值
     int[][] arr=(int[][])array;
     System.out.println(arr[2][2]);
     
}
}

总结:

  只要用到反射,先获得class对象

  没有方法能获得当前类的超类的private方法和属性,你必须通过getSuperClass()找到超类以后再去尝试获得

私有的属性和方法需要设置压制权限setAccessible(true)来取的访问权,这样会破坏封装性  不到万不得以尽量少用

原文地址:https://www.cnblogs.com/tanlei-sxs/p/9998679.html