lie*_*ies 14 java singleton classloader
例如,我有Singleton
静态字段的类instance
:
public class Singleton {
private static Singleton instance;
// other code, construct, getters, no matter
}
Run Code Online (Sandbox Code Playgroud)
我可以用两个不同的类加载器加载这个类两次.我怎么能避免它?这是不安全和危险的.
另外,如果我将实例设置为null,它是否会为两个类设置为null?
Singleton singleton = Singleton.getInstance();
singleton = null;
Run Code Online (Sandbox Code Playgroud)
Sea*_*man 28
如果你想要一个真正的Singleton
跨类加载器,那么你需要一个共同的父来加载有问题的类,或者你需要自己指定类加载器.
更新:从@Pshemo下面的评论中,下面博客中的一些内容可能直接来自JavaWorld文章.我已离开博客条目,因为它可能仍然可以帮助某人,但它值得知道内容最初来自哪里.
原文: 有一个博客条目为您提供了一种方法"(虽然我没有尝试过!),它看起来相当合理
正如下面的请求,我上面的链接中的代码片段 - 我建议您访问博客,但需要完整的上下文:
private static Class getClass(String classname) throws ClassNotFoundException {
ClassLoader classLoader = Thread.currentThread().getContextClassLoader();
if(classLoader == null)
classLoader = Singleton.class.getClassLoader();
return (classLoader.loadClass(classname));
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
24570 次 |
最近记录: |