有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

创建2个单例Java类实例

我知道这个问题很奇怪,但我只是想知道:有没有办法在Java中创建一个单例类的多个实例

我的情况是这样的:

我有一个单例类,我需要该类的2个对象/实例。有没有办法修改类以创建多个实例

我的班级:

public class SingletonClass {

    private static SingletonClass sSoleInstance;

    //private constructor.
    private SingletonClass(){

        //Prevent form the reflection api.
        if (sSoleInstance != null){
            throw new RuntimeException("Use getInstance() method to get the single instance of this class.");
        }
    } 

    public static SingletonClass getInstance(){
        if (sSoleInstance == null){ //if there is no instance available... create new one
            sSoleInstance = new SingletonClass();
        }

        return sSoleInstance;
    }
}

共 (2) 个答案

  1. # 1 楼答案

    可以使用枚举模式创建单例;像

    public enum Whatever { 
      INSTANCE;
    }
    

    将其转换为双单件的过程如下:

    public enum Whatever { 
      INSTANCE, YETANOTHER
    }
    

    记录在案:我刚刚编造了“双单身”这个词;简单地说,从概念的角度来看,这几乎没有意义。如果您需要多个实例,那么它不是单实例;时期所以你的问题听起来更像是一个XY问题

    和一个注释:考虑使用EnUM解决方案;因为默认情况下它是线程安全的;您正在使用的代码不正确。但是在做出改变之前,做一些研究来了解这些方法的利弊

  2. # 2 楼答案

    绝对有效的问题和有效的用例-简而言之,当使用静态工厂方法时,您可以有多个带有私有构造函数的类实例。通过使构造函数私有,您可以确保您的类不能从外部实例化,但与此同时,所讨论的类可以随意多次实例化自己

    有关详细信息和代码示例,请查看this article。 希望有帮助