gpt4 book ai didi

java - 从类中获取静态字段的值

转载 作者:行者123 更新时间:2023-11-30 07:08:39 27 4
gpt4 key购买 nike

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> 中获取静态字段的值? ?

最佳答案

尝试反射(reflection)

要遵循的步骤:

  • 首先使用类的变量名检索类的声明字段
  • 检查返回字段的类型
  • 然后在Field上调用相应的方法获取字段值

示例代码:

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 的评论,您可以直接获取值而无需检查字段类型和 mathodField#getX() 如下所示,但它将返回 Object 而不是原始 int.

Field f = list.get(0).getDeclaredField("i");
System.out.println(f.get(null));

关于java - 从类中获取静态字段的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23876399/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com