2013-01-08 66 views
1

說我有這個類訪問陣列從現場通過Java反射

public static final class MyClass { 

    public static final int A = 4 ; 

    public static final int[] B = { 1, 2, 3, 4 }; 
} 

我不得不通過反射來訪問上面的類及其字段值

Class<?> myClass = getDesiredClass("MyClass"); 

我能拿到本

int a = myClass.getField("A").getInt(myClass); 

但如何A的值來獲得B的值,我應該用什麼方法場?

int[] b = myClass.getField("B").? 

回答

4

int[]Object,因此就使用(int[]) get(myClass) - 或替代,(int[]) get(null),由於需要對靜態字段沒有參數。

+0

感謝您的快速回復。很酷,它工作。 – amsiddh

2

所有這些都是等效的。我會選擇最簡單的。 ;)

int[] b = MyClass.B; 
int[] b = (int[]) MyClass.class.getField("B").get(null); 
int[] b = (int[]) Class.forName("MyClass").getField("B").get(null); 
+0

感謝您的快速回復以及詳細說明。 – amsiddh