静态final和多个类加载器

时间:2011-03-14 15:25:57

标签: java static classloader final

我有这样的定义

public static final Object foo = Xyz.generateFoo(); 

我的应用程序正在使用多个自定义类加载器。如何确保所有类都看到foo的相同实例?

最好不要求助于外部存储(即System.Properties或文件)。感谢。

3 个答案:

答案 0 :(得分:4)

在由公共父类加载器加载的类中放置对值的引用。

答案 1 :(得分:1)

请注意,如果您的某些自定义类加载器违反了“首先检查父类加载器”规则(例如,与webapp类加载器一样),则无法确保它。

否则,您可以将该字段放置在由父类加载器加载的类中,如Tom Hawtin所建议。

答案 2 :(得分:0)

您是希望此Xyz.generateFoo();的返回始终相同,还是在分配给您想要访问同一实例的变量public static final Object foo = Xyz.generateFoo();之后。