如何停止创建Singleton

时间:2015-05-11 23:02:32

标签: java singleton

我有一个像这样的Singleton类:

class Singleton {
    static class SingletonHolder {
        static final Singleton INSTANCE = new Singleton();
    }
    public static Singleton getInstance() {
        return SingletonHolder.INSTANCE;
    }
}

我可以从其他班级这样打电话:

Singleton dummy = new Singleton();

如果是,我该怎么禁用它?如果没有,那为什么我不能?

2 个答案:

答案 0 :(得分:7)

不确定。只需将构造函数设为私有以避免这种情况:只需添加private Singleton() {}以防止默认构造函数被公开。

答案 1 :(得分:3)

我建议您将其设为enum(因为无论如何都无法实例化);

enum Singleton {
    INSTANCE;
    public static Singleton getInstance() {
        return INSTANCE;
    }
}