使用枚举实现单例(在 Java 中)
2022-08-31 06:04:44
我已经读到,可以使用如下方法在Java中实现:Singleton
Enum
public enum MySingleton {
INSTANCE;
}
但是,上述方法如何工作?具体来说,必须实例化 。在这里,如何实例化?谁在做?Object
MySingleton
new MySingleton()
我已经读到,可以使用如下方法在Java中实现:Singleton
Enum
public enum MySingleton {
INSTANCE;
}
但是,上述方法如何工作?具体来说,必须实例化 。在这里,如何实例化?谁在做?Object
MySingleton
new MySingleton()
这
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
类型是 的特殊类型。enum
class
您的遗嘱实际上被编译为类似enum
public final class MySingleton {
public final static MySingleton INSTANCE = new MySingleton();
private MySingleton(){}
}
当您的代码首次访问 时,该类将由 JVM 加载并初始化。此过程初始化上面的字段一次(懒惰)。INSTANCE
MySingleton
static