相关疑难解决方法(0)

为什么枚举单例是惰性的?

我看到了这样的答案,试图通过评论来澄清,但对这里的例子不满意。

也许是时候提出这个具体问题了......

为什么枚举单例实现被称为惰性

public enum EnumLazySingleton {
    INSTANCE;
    EnumLazySingleton() {
        System.out.println("constructing: " + this);
    }
    public static void touchClass() {}
}
Run Code Online (Sandbox Code Playgroud)

它与急切的实现有何不同?

public class BasicEagerSingleton {
    private static final BasicEagerSingleton instance = new BasicEagerSingleton();
    public static BasicEagerSingleton getInstance() {
        return instance;
    }
    private BasicEagerSingleton() {
        System.out.println("constructing: " + this);
    }
    public static void touchClass() {}
}
Run Code Online (Sandbox Code Playgroud)

两者都将初始化实例而不访问INSTANCE/getInstance()- 例如 call touchClass()

public class TestSingleton {
    public static void main(String... args) …
Run Code Online (Sandbox Code Playgroud)

java singleton enums double-checked-locking lazy-initialization

5
推荐指数
1
解决办法
1042
查看次数

两个单例示例之间的差异

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()方法有什么区别?谢谢

java singleton instance

0
推荐指数
1
解决办法
229
查看次数