最好将Singleton的实例声明为static
或static final
?
请参见以下示例:
static
版本
public class Singleton {
private static Singleton instance = new Singleton();
private Singleton() {
}
public static Singleton getInstance() {
return instance;
}
}
static final
版本public class Singleton {
private static final Singleton INSTANCE = new Singleton();
private Singleton() {
}
public static Singleton getInstance() {
return INSTANCE;
}
}
最佳答案
在您的特定情况下,完全没有区别。您的第二个已经是effectively final。
但
撇开下面的实现不是线程安全的事实,只是表明了final的不同。
如果实例的延迟初始化,您可能会感到与众不同。看起来很懒惰的初始化。
public class Singleton {
private static Singleton INSTANCE; /error
private Singleton() {
}
public static Singleton getInstance() {
if (INSTANCE ==null) {
INSTANCE = new Singleton(); //error
}
return INSTANCE;
}
}
关于java - 单例模式: static or static final?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/32371219/