使用反射建立一維陣列和二維陣列
阿新 • • 發佈:2018-11-22
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)來取的訪問權,這樣會破壞封裝性 不到萬不得以儘量少用