相关疑难解决方法(0)

793
推荐指数
17
解决办法
30万
查看次数

什么是枚举,为什么它们有用?

今天我正在浏览这个网站上的一些问题,我发现提到了一个enum 单独使用模式的关于这种解决方案所谓的线程安全的好处.

我从来没有使用过enums,而且我已经用Java编程了好几年了.显然他们改变了很多.现在他们甚至在自己内部全力支持OOP.

现在为什么我应该在日常编程中使用枚举?

java enums

464
推荐指数
13
解决办法
28万
查看次数

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

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

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

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

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
查看次数