我有一个像这样的Singleton类:
class Singleton {
static class SingletonHolder {
static final Singleton INSTANCE = new Singleton();
}
public static Singleton getInstance() {
return SingletonHolder.INSTANCE;
}
}
我可以从其他班级这样打电话:
Singleton dummy = new Singleton();
如果是,我该怎么禁用它?如果没有,那为什么我不能?
答案 0 :(得分:7)
不确定。只需将构造函数设为私有以避免这种情况:只需添加private Singleton() {}
以防止默认构造函数被公开。
答案 1 :(得分:3)
我建议您将其设为enum
(因为无论如何都无法实例化);
enum Singleton {
INSTANCE;
public static Singleton getInstance() {
return INSTANCE;
}
}