java - 最终静态与非最终静态变量?

标签 java multithreading design-patterns

有人知道这两种方法的区别吗?

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/

相关文章:

java - 关键字 "transient"在 Java 中是什么意思?

java - 将 URL 数据写入文件为空

java - 阻塞队列和多线程消费者,如何知道何时停止

java - 你如何在 java webdriver 中使用线程运行两个 firefox 实例

asp.net-mvc - MVC Controller 中重构和处理非异常错误的设计模式

winforms - 域维护控制/表单,有模式吗?

java - Java中正负的情况下如何进行类型扩展?

java - 类型中的方法不适用于参数 - 但它应该是(jsp)

c# - 短时间使用 Thread.Sleep 的问题

java - 随机百分比分支的编码模式?