我们可以声明构造函数static来创建单例类吗? java的

时间:2016-09-07 19:01:22

标签: java oop singleton

class SomeClass{
    static SomeClass(){
    }
}

在这里,虽然我们可能会创建不同的名称,但它不应该指向相同的内存位置?类似于用他的名字称呼同一个人,曾经是他的绰号?它还是单身人士吗?

2 个答案:

答案 0 :(得分:2)

您无法拥有static构造函数,因为它的工作是初始化this实例对象。

在Scala中你可以写

object SomeClass {

}

在类的单例和静态字段之间创建内容。

在Java中定义单例的最简单方法是使用enum

enum SomeClass {
    INSTANCE;
}

SomeClass.INSTANCE的所有引用都是同一个实例。

答案 1 :(得分:1)

这是创建和发布单例的正确方法,假设您不想使用隐式单例(如enum):

public SomeClass
{
    private static class SingletonHolder
    {
        public static final SomeClass INSTANCE = new SomeClass();
    }

    public static SomeClass getInstance()
    {
        return SingletonHolder.INSTANCE;
    }

    private SomeClass()
    {
    }
}