当前位置: 首页 > 面试题库 >

Java 具有多个不同类加载器的Singleton类

杭昊空
2023-03-14
问题内容

例如我有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));
}


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

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

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

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

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

  • 我希望每个框中都有新的日期范围,但它只返回最后一个文本框的日期范围。我也使文本框id的动态,但我仍然面临着这个问题。我有每个文本框的开始日期和结束日期,我用PHP计算了开始日期和结束日期的日期范围,并禁用了用户在开始日期和日期中选择的所有日期,所有这些日期都正常工作,但它返回了datepicker中禁用的最后一个文本框日期。 这是截图- 示例图像 用于datepicker的Javascript函数