abstract class A {
static int i = 5;
}
class B extends A {
static int i = 6;
}
class C extends A {
static int i = 7;
}
现在我有一个ArrayList<Class<? extends A>>
。如何从Class<? extends A>
?
答案 0 :(得分:4)
尝试使用反射
要遵循的步骤:
示例代码:
ArrayList<Class<? extends A>> list = new ArrayList<Class<? extends A>>();
list.add(B.class);
list.add(A.class);
// get the value of first class stored in array
Field f = list.get(0).getDeclaredField("i");
Class<?> t = f.getType();
if (t == int.class) {
System.out.println(f.getInt(null));
}
根据@Sotirios Delimanolis评论,您可以直接获取值,而无需检查字段类型和mathod Field#getX()
,如下所示,但它将返回Object
而不是原始int
。
Field f = list.get(0).getDeclaredField("i");
System.out.println(f.get(null));