当前位置: 首页 > 知识库问答 >
问题:

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

柳逸春
2023-03-14
public class Singleton {

    private static Singleton instance;

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

另外,如果我将instance设置为null,那么这两个类是否都设置为null?

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

共有1个答案

杜正奇
2023-03-14

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

更新:从@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));
}
 类似资料:
  • 问题内容: 例如我有静态字段的类: 我可以使用两个不同的类加载器两次加载该类。我该如何避免呢?这是不安全和危险的。 另外,如果我将instance设置为null,那么是否将两个类的instance都设置为null? 问题答案: 如果你希望跨类加载器为true ,则需要一个公共父类来加载所讨论的类,或者你需要自己指定类加载器。 更新:来自@Pshemo的评论下面的博客中相当一部分内容可能直接来自Ja

  • 问题内容: 我的申请有问题。要恢复该问题,我必须将应用程序从jboss 4迁移到jboss 5。 在战争部署期间,我遇到了以下错误: 经过多次搜索后,我发现此错误在这里,因为我多次在同一个包中找到同一个类。曾经在一个依赖包中(来自我的pom.xml),一次是由jboss提供的。 因此,为解决此问题,我为依赖项提供了一个“提供”的范围。 但是我不明白为什么这种解决方案有效。我认为在一个应用程序中有几

  • 问题内容: 我创建了一个小部件,该小部件显示一个简单的textview,可在配置活动中将其作为Edittext编辑。我将输入的文本与共享的首选项一起保存,因此用户可以点击小部件来编辑文本,并且已经输入的文本将出现在edittextfield中。我的问题是这个。我希望用户能够添加多个窗口小部件,但是当添加第二个窗口小部件时,将从共享首选项中加载与其他窗口小部件中相同的文本。并且,当在widget上被

  • 我正在使用java。util。ServiceLoader创建轻量级插件框架。 我目前正在努力解决如何拥有多个具有相同FQN的实现类。我想在类路径上拥有同一个插件的两个副本,并且可以访问META-INF/services目录中给出的两个实现类。 以下是一些简单的eclipse项目,它们说明了我的意思:https://docs.google.com/open?id=0B4MxFm-ACB3IUmswN

  • 我使用SpringBoot,有两个非常相似的服务,我想在。 配置大致如下所示: 是否可以创建一个带有注释的类,并在注入点设置前缀? 例如。 然后在服务本身: 不幸的是,我还没有在留档中找到关于这样一个功能的东西...非常感谢您的帮助!

  • 我有一个需要分解的spark数据帧,格式如下。我检查其他解决方案,比如这个。但是,在我的例子中,之前的之后的 或“after”。 我可以在两个单独的爆炸中执行此操作,其中我在每个爆炸中创建列,然后创建。 但是,我想知道是否有更优雅的方式来做到这一点。谢谢