要在Java中使用一个人为的例子,这里是代码:
enum Commands{
Save("S");
File("F");
private String shortCut;
private Commands(String shortCut){ this.shortCut = shortCut; }
public String getShortCut(){ return shortCut; }
}
我有以下测试/驱动程序代码:
public static void main(String args[]){
System.out.println(Commands.Save.getShortCut());
}
问题是:
在Java中,何时调用枚举常量的构造函数?在上面的例子中,我只使用Save
枚举常量。这是否意味着只调用一次构造函数来创建Save
?或者Save
和File
是否可以一起构建?
答案 0 :(得分:13)
初始化enum
类时调用构造函数。无论实际引用和使用哪些成员,都将以成员声明顺序调用每个构造函数。
答案 1 :(得分:3)
与static() {...}
方法非常相似,首次初始化Enum类时会调用构造函数。 Enum的所有实例都是在使用任何实例之前创建的。
public static void main(String args[]){
System.out.println(Commands.Save.getShortCut());
}
在此示例中,Save
和File
的ctor将在调用Save.getShortCut()
之前完成。
按顺序调用它们,如代码中所声明的那样。
答案 2 :(得分:2)
正如其他人所说,两者都将在类初始化时创建。我想指出这是在任何静态初始化程序之前完成的,因此您可以在静态块中使用这些枚举。