用Enum实现Singleton(用Java我已经读过可以Singleton使用以下方法在Java中实现Enum:public enum MySingleton {
INSTANCE; }但是,上面的工作如何?具体而言,Object必须实例化。在这里,如何MySingleton被实例化?谁在做什么new MySingleton()?
3 回答
萧十郎
TA贡献1815条经验 获得超13个赞
这个,
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);}你会看到
HereINSTANCE
enum字段是编译时常量,但它们是其enum类型的实例。并且,它们是在第一次引用枚举类型时构造的。
沧海一幻觉
TA贡献1824条经验 获得超5个赞
一种enum类型是一种特殊类型的class。
你的enum意志实际上会被编译成类似的东西
public final class MySingleton {
public final static MySingleton INSTANCE = new MySingleton();
private MySingleton(){} }当您的代码首次访问时INSTANCE,该类MySingleton将由JVM加载并初始化。此过程初始化static上面的字段一次(懒惰)。
添加回答
举报
0/150
提交
取消
