gpt4 book ai didi

java - 具有多个不同类加载器的单例类

转载 作者:太空狗 更新时间:2023-10-29 23:02:42 27 4
gpt4 key购买 nike

例如,我有类 Singleton 和静态字段 instance:

public class Singleton {

private static Singleton instance;

// other code, construct, getters, no matter
}

我可以用两个不同的类加载器加载这个类两次。我怎么能避免呢?这是不安全和危险的。

此外,如果我将实例设置为 null,它会为两个类都设置为 null 吗?

Singleton singleton = Singleton.getInstance();
singleton = null;

最佳答案

如果你想要跨类加载器的真正单例,那么你需要一个共同的父类来加载有问题的类,或者你需要自己指定类加载器。

更新:根据下面@Pshemo 的评论,下面博客中的相当一部分内容可能直接来自 JavaWorld Article .我已将博客条目留在其中,因为它可能仍对某些人有所帮助,但值得了解内容的原始来源。

原文:有一个 blog entry that gives you a way to do this”(虽然我还没有尝试过!),而且看起来相当合理

根据下面的要求,我上面的链接中的代码片段 - 我建议您访问博客,但要了解完整的上下文:

private static Class getClass(String classname) throws ClassNotFoundException {
ClassLoader classLoader = Thread.currentThread().getContextClassLoader();
if(classLoader == null)
classLoader = Singleton.class.getClassLoader();
return (classLoader.loadClass(classname));
}

关于java - 具有多个不同类加载器的单例类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15156840/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com