我别无选择,只能通过反射来访问一组类,而我无法修改这些类的结构。但是,使用下面main方法中所示的方法会抛出NullPointerException。在调用f1.get(null)时,空指针引用“table”会导致此错误。
我无法事先实例化这些类,因为唯一的构造函数是私有的,如所示。因此,我无法显式设置table。
有人知道我如何通过反射调用Legacy.A吗?
我无法事先实例化这些类,因为唯一的构造函数是私有的,如所示。因此,我无法显式设置table。
有人知道我如何通过反射调用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<String, Legacy> table = new HashMap<String, Legacy>();
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);
}
}
之前的"反射 == 坏!!!"