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

如何多次实例化一个Singleton?

史宸
2023-03-14
问题内容

我的代码中需要一个单例。我用Java实现了它,并且效果很好。我这样做的原因是为了确保在多种环境中只有一个此类的实例。

但是现在我想用单元测试在本地测试我的Singleton对象。因此,我需要模拟此Singleton的另一个实例(该对象可能来自另一个设备)。那么是否有可能第二次实例化Singleton以进行测试,还是我必须对其进行模拟?

我不确定,但是我认为可以通过使用其他类加载器来实现?


问题答案:

您可以使用反射来调用单例类的私有构造函数,以创建该类的新实例。

class MySingleton {
    private MySingleton() {
    }
}

class Test {
    public void test() throws Exception {
        Constructor<MySingleton> constructor = MySingleton.class.getConstructor();
        constructor.setAccessible(true);
        MySingleton otherSingleton = constructor.newInstance();
    }
}


 类似资料:
  • 问题内容: 我正在使用一个设置,其中每个保留的对象都有其自己的实例。但是,这实际上意味着这些领域都在主线程上。 现在这也意味着,如果我想修改Realm,我要么需要在主线程上执行此操作(对于小型数据集就可以,但是我真的不想对大型数据集进行此操作),或者需要在后台线程上执行此操作,并立即刷新 每个 Realm实例(这对于事件总线来说很简单)。 和 但是,假设我在主线程上打开了大约5-7个领域实例(因为

  • 一个简单的问题,但我找不到答案。我有一个FXML文件,我想多次实例化。每个副本都需要自己的句柄,以便我可以更改其中的数据。假设,这与在刚创建的类上使用“new”关键字完全一样。 到目前为止,在我的尝试中,我已经能够创建fxml文件的多个副本,但只有一个控制器,因此调用方法意味着更改发生在所有副本上。 我是否必须为同一fxml文件的每个副本创建一个新控制器? 提前感谢 编辑 我正在研究这个想法的代码

  • 本文向大家介绍vue props 一次传多个值实例,包括了vue props 一次传多个值实例的使用技巧和注意事项,需要的朋友参考一下 数组: <custom-element :whatever="[...array]"></custom-element> 对象: <custom-element :whatever="{...obj}"></custom-element> 或者: <custom-

  • 有人能解释一下下面的代码是如何毫无例外地工作的吗。我在想,当为星期天创建新实例时,它也会为星期一(星期天内)创建一个新实例,然后再为星期天(星期一内)创建一个新实例,以此类推。。。类似递归的东西,因为它们都是课程周的一部分。但我的理解是错误的,因为下面的代码运行良好。 我有这个疑问,当我读到java枚举。

  • 使用自定义比较器,每次实例化比较器,而不是将其创建为常量(使用匿名类)并使用单个实例,有什么好处吗?我一直认为每次创建一个新实例没有什么好处,并且一直采用选项2(静态final字段中的单个实例)。 这里的假设是没有状态需要保留在比较器中。 如果do某物()被称为很多呢?如果do某物()从多个线程被调用怎么办?如果CUSTOM_COMPARATOR被拉到一个普通的班级里,公开而不是私下呢?