例如我有Singleton静态字段的类instance:
Singleton
instance
public class Singleton { private static Singleton instance; // other code, construct, getters, no matter }
我可以使用两个不同的类加载器两次加载该类。我该如何避免呢?这是不安全和危险的。
另外,如果我将instance设置为null,那么是否将两个类的instance都设置为null?
Singleton singleton = Singleton.getInstance(); singleton = null;
如果你希望Singleton跨类加载器为true ,则需要一个公共父类来加载所讨论的类,或者你需要自己指定类加载器。
更新:来自@Pshemo的评论下面的博客中相当一部分内容可能直接来自JavaWorld Article。我将博客条目保留在其中,因为它可能仍然可以帮助某人,但是值得知道该内容最初来自何处。
原文: 有一个博客条目为你提供了一种执行此操作的方法”(尽管我还没有尝试过!),而且看起来相当合理
按照下面的要求,我在上面的链接中提供了一个代码段-我建议你尽管访问全文,但还是请访问该博客:
private static Class getClass(String classname) throws ClassNotFoundException { ClassLoader classLoader = Thread.currentThread().getContextClassLoader(); if(classLoader == null) classLoader = Singleton.class.getClassLoader(); return (classLoader.loadClass(classname)); }