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)来取的访问权,这样会破坏封装性 不到万不得以尽量少用