我有这样的定义
public static final Object foo = Xyz.generateFoo();
我的应用程序正在使用多个自定义类加载器。如何确保所有类都看到foo
的相同实例?
最好不要求助于外部存储(即System.Properties或文件)。感谢。
答案 0 :(得分:4)
在由公共父类加载器加载的类中放置对值的引用。
答案 1 :(得分:1)
请注意,如果您的某些自定义类加载器违反了“首先检查父类加载器”规则(例如,与webapp类加载器一样),则无法确保它。
否则,您可以将该字段放置在由父类加载器加载的类中,如Tom Hawtin所建议。
答案 2 :(得分:0)
您是希望此Xyz.generateFoo();
的返回始终相同,还是在分配给您想要访问同一实例的变量public static final Object foo = Xyz.generateFoo();
之后。