小编典典

使用枚举实现单例(Java 中)

all

我已经读到可以Singleton使用以下方法在 Java中实现Enum

public enum MySingleton {
     INSTANCE;   
}

但是,以上是如何工作的?具体来说,Object必须实例化一个。在这里,如何MySingleton被实例化?谁在做new MySingleton()


阅读 61

收藏
2022-06-23

共1个答案

小编典典

这个,

public enum MySingleton {
  INSTANCE;   
}

有一个隐式的空构造函数。改为明确,

public enum MySingleton {
    INSTANCE;
    private MySingleton() {
        System.out.println("Here");
    }
}

main()如果您随后使用类似的方法添加了另一个类

public static void main(String[] args) {
    System.out.println(MySingleton.INSTANCE);
}

你会看到

Here
INSTANCE

enum字段是编译时常量,但它们是其enum类型的实例。而且,它们是 在第一次 引用枚举类型时构造的。

2022-06-23