静态final和多个类加载器

发布于 2024-10-22 07:14:19 字数 206 浏览 6 评论 0原文

我有一个这样的定义

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

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

最好不诉诸外部存储(即 System.Properties 或文件)。谢谢。

I have a definition like this

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

And my application is using multiple custom class loaders. How can I ensure that all classes see the same instance of foo?

Preferrably without resorting to external storage (ie System.Properties or file). Thanks.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

若水般的淡然安静女子 2024-10-29 07:14:19

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

Place a reference to the value in a class loaded by a common parent class loader.

梦旅人picnic 2024-10-29 07:14:19

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

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

Note that there is no way to ensure it if some of your custom classloaders violate the "check parent classloader first" rule (for example, as webapp classloaders do).

Otherwise you can place that field to the class loaded by parent classloader, as suggested by Tom Hawtin.

成熟稳重的好男人 2024-10-29 07:14:19

您是否希望此 Xyz.generateFoo(); 的返回值始终相同,或者在分配给变量 public static final Object foo = Xyz.generateFoo(); 后始终相同code> 您想要在任何地方访问同一个实例。

Is that you want the return of this Xyz.generateFoo(); to be same all the time or after assigning to the variable public static final Object foo = Xyz.generateFoo(); you want to access the same instance ever where.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文