两个单例示例之间的差异

gjm*_*an2 0 java singleton instance

A级1

public class A {

    private static final A instance = new A();

    public static A getInstance() {
        return new A();
    }

}
Run Code Online (Sandbox Code Playgroud)

A级2

public class A {

    private static final A instance = new A();
    private A(){}
    public static A getInstance() {
        return instance;
    }

}
Run Code Online (Sandbox Code Playgroud)

我刚开始学习单例,我看到了两个使用A 1示例和A 2示例的Java示例.A 1级getInstance()是单身吗?我也想知道这两个A类getInstance()方法有什么区别?谢谢

san*_*hat 6

在A1中,A不是singleton .. getInstance()正在返回A每次的新实例

在A2中,不再A单例,导致默认构造函数仍然是public(隐式).人们可以从外部轻松创建更多实例

编辑:

由于您已A在A2中编辑了类,现在它变为单例.

A是急切创建的,默认情况下是线程安全的.检查懒惰与急切的初始化