说我有这个班级
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的价值,我应该使用哪种方法?
int[] b = myClass.getField("B").?
答案 0 :(得分:4)
int[]
是Object
,因此只需使用(int[]) get(myClass)
- 或者(int[]) get(null)
,因为静态字段不需要参数。
答案 1 :(得分:2)
所有这些都是等价的。我会选择最简单的。 ;)
int[] b = MyClass.B;
int[] b = (int[]) MyClass.class.getField("B").get(null);
int[] b = (int[]) Class.forName("MyClass").getField("B").get(null);