在Java中,何时调用枚举常量的构造函数?

Uma*_*air 14 java enums constructor

要在Java中使用一个人为的例子,这里是代码:

enum Commands{
   Save("S");
   File("F");

   private String shortCut;
   private Commands(String shortCut){ this.shortCut = shortCut; }
   public String getShortCut(){ return shortCut; }
}
Run Code Online (Sandbox Code Playgroud)

我有以下测试/驱动程序代码:

public static void main(String args[]){
   System.out.println(Commands.Save.getShortCut());
}
Run Code Online (Sandbox Code Playgroud)

问题是:在Java中,何时调用枚举常量的构造函数?在上面的例子中,我只使用Save枚举常量.这是否意味着构造函数只被调用一次才能创建Save?或者将两者SaveFile建造在一起不管?

eri*_*son 13

enum初始化类时调用构造函数.无论实际引用和使用哪些成员,都将以成员声明顺序调用每个构造函数.

  • @MuhammadBabar"enum"成员的声明使用一些"语法糖"来生成代码.如果你声明一个`enum`就像`状态{GOOD,BAD; private Status(){}}`,它等同于`public static final GOOD = new Status(); public static final BAD = new Status();`并且在加载`Status`"class"时执行该代码. (3认同)