sách gpt4 ai đã đi

java - 反射访问Java类中的静态变量

In lại 作者:塔克拉玛干 更新时间:2023-11-01 21:43:51 25 4
mua khóa gpt4 Nike

我别无选择,只能通过反射使用此结构访问一组我无法修改的类。但是,使用下面主要方法中显示的方法会抛出 NullPointerException。调用 f1.get(null) 时,构造函数中的空指针为“表”。

我无法预先实例化这些类,因为唯一的构造函数是所示的构造函数,它是私有(private)的。所以我也没有办法显式设置表。

有谁知道我可以反射(reflection)性地调用 Legacy.A 的方法吗?

public class Legacy {   
public static final Legacy A = new Legacy("A");
public static final Legacy B = new Legacy("B");

private String type0;
private static Map table = new HashMap();

private Legacy(String id) {
type0 = id;
table.put(type0, this);
}

public static void main(String[] args) throws Exception {
Field f1 = Legacy.class.getDeclaredField("A");
Object o = f1.get(null);
}
}

在“Reflection == BAD!!!”之前

1 Câu trả lời

静态初始化器的顺序错误,table 必须在构造函数调用之前。

这就是类加载和初始化时出现异常的原因。这与反射无关。

关于java - 反射访问Java类中的静态变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1256996/

25 4 0
Bài viết được đề xuất: Android调试器不断断开连接
Bài viết được đề xuất: java - 禁用Java中的库?
Bài viết được đề xuất: android - Proguard 似乎删除了路径中包含的整个包
Bài viết được đề xuất: Mã bytecode Java có tương thích với các phiên bản Java khác nhau không?
Giấy chứng nhận ICP Bắc Kinh số 000000
Hợp tác quảng cáo: 1813099741@qq.com 6ren.com