为了账号安全,请及时绑定邮箱和手机立即绑定

用Enum实现Singleton(用Java)

用Enum实现Singleton(用Java)

蝴蝶刀刀 2019-07-23 19:02:37
用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类型的实例。并且,它们是在第一次引用枚举类型时构造的。


查看完整回答
反对 回复 2019-07-23
?
沧海一幻觉

TA贡献1824条经验 获得超5个赞

一种enum类型是一种特殊类型的class

你的enum意志实际上会被编译成类似的东西

public final class MySingleton {
    public final static MySingleton INSTANCE = new MySingleton();
    private MySingleton(){} }

当您的代码首次访问时INSTANCE,该类MySingleton将由JVM加载并初始化。此过程初始化static上面的字段一次(懒惰)。


查看完整回答
反对 回复 2019-07-23
  • 3 回答
  • 0 关注
  • 711 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信