1

说我有这门课

public static final class MyClass { 

    public static final int A = 4 ;

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

我必须通过反射访问上面的类及其字段值

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

我可以通过这个得到 A 的值

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

但是如何获得 B 的值,我应该使用哪些 Field 方法?

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

2 回答 2

4

Anint[]Object,因此只需使用(int[]) get(myClass)-- 或替代 ,(int[]) get(null)因为静态字段不需要参数。

于 2013-01-08T20:32:09.340 回答
2

所有这些都是等价的。我会选择最简单的。;)

int[] b = MyClass.B;
int[] b = (int[]) MyClass.class.getField("B").get(null);
int[] b = (int[]) Class.forName("MyClass").getField("B").get(null);
于 2013-01-08T20:34:15.990 回答