有人知道这两种方法的区别吗?
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;
}
}
我知道最终静态变量是线程安全的,但是我找不到非最终静态变量的任何问题。 (注意:我正在寻找最终静态变量与非最终静态变量的区别,所以请不要建议如何实现单例设计模式。我知道有一种枚举方法。)
已编辑:我在方法上遗漏了 static 关键字,现在已修复!
最佳答案
除了可能的编译器优化外,没有太大区别。在任何一种情况下,因为它是私有(private)的,没有 setter ,所以没有任何东西可以修改它,所以它是否是 final
并不特别重要。但是,在这两种情况下,您的 getInstance()
方法都需要声明为 static
。
关于java - 最终静态与非最终静态变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15485290/