单个类与几个不同的类加载器

例如我有静态字段instanceSingleton

 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)); }