有谁知道这两种方法的区别吗?
public class SingleTone {
private static final instance = new SingleTone();
private SingleTone() {
}
public [static] SingleTone getinstance() {
return instance;
}
}
和
public class SingleTone {
private static instance = new SingleTone();
private SingleTone() {
}
public [static] SingleTone getinstance() {
return instance;
}
}
我知道最终的静态变量是线程安全的,但是非最终变量我找不到任何问题。
(注意:我正在寻求最终静态变量与非最终静态变量的区别,因此请不要提出如何实现Singleton设计模式的建议。我知道有一种枚举方法。)
编辑:我错过了现在固定的方法中的静态关键字!
最佳答案
除了可能的编译器优化外,没有太大区别。在这两种情况下,由于它都是私有(private)的,没有 setter ,所以没有任何东西可以修改它,因此,不管它是否是final
,这都没有特别重要。但是,在两种情况下,都需要将getInstance()
方法声明为static
。