用Enum实现Singleton(用Java)

用Enum实现Singleton(用Java

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

public enum MySingleton {
     INSTANCE;   }

但是,上面的工作如何?具体而言,Object必须实例化。在这里,如何MySingleton被实例化?谁在做什么new MySingleton()


蝴蝶刀刀
浏览 712回答 3
3回答

萧十郎

这个,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);}你会看到HereINSTANCEenum字段是编译时常量,但它们是其enum类型的实例。并且,它们是在第一次引用枚举类型时构造的。

沧海一幻觉

一种enum类型是一种特殊类型的class。你的enum意志实际上会被编译成类似的东西public final class MySingleton {     public final static MySingleton INSTANCE = new MySingleton();     private MySingleton(){} }当您的代码首次访问时INSTANCE,该类MySingleton将由JVM加载并初始化。此过程初始化static上面的字段一次(懒惰)。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java