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

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

09-25 22:00