单个类与几个不同的类加载器
例如我有静态字段instance
类Singleton
:
public class Singleton { private static Singleton instance; // other code, construct, getters, no matter }
我可以用两个不同的类加载器加载这个类。 我怎么能避免它? 这是不安全和危险的。
此外,如果我将实例设置为null,它是否将设置为null这两个类?
Singleton singleton = Singleton.getInstance(); singleton = null;
如果你想在一个类加载器中使用一个真正的Singleton
,那么你需要一个通用的父类来加载有问题的类,或者你需要自己指定类加载器。
更新:来自@Pshemo的评论下面的博客内容的一小部分可能直接来自JavaWorld文章 。 我已经离开了博客条目,因为它可能仍然有助于某人,但是值得知道内容最初来自哪里。
原文:有一个博客条目,给你一个这样做的方法“(虽然我没有尝试过!),它看起来相当合理
按照以下要求从我的链接上面的代码片段 – 我build议你访问博客,虽然完整的上下文:
private static Class getClass(String classname) throws ClassNotFoundException { ClassLoader classLoader = Thread.currentThread().getContextClassLoader(); if(classLoader == null) classLoader = Singleton.class.getClassLoader(); return (classLoader.loadClass(classname)); }