要使用Java的一个人为的例子,下面的代码:在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
都可以一起构建?当enum
类初始化
是否当'ClassLoader'加载类的意思是,枚举的构造函数被调用?还是访问成员像保存和文件将调用构造函数?如果没有参数构造函数会发生什么? – 2016-11-23 05:13:42
@MuhammadBabar一个类可以被加载而不被初始化。所以,不,这意味着当类被初始化时,每个成员都被构造。而且,正如我所说,成员是否被引用并不重要;它在类被初始化时被构造。你的第二个问题不清楚。如果没有为成员提供参数,则必须定义一个无参数构造函数,否则枚举将不会编译。你是这个意思吗? – erickson 2016-11-23 06:50:17
但在枚举中,我们从来没有做SomeEnum(),即没有明确的初始化!在我的情况下,枚举只有一个变量即* instance *和一个没有参数的私有构造函数。这个构造函数什么时候被调用? – 2016-11-23 09:01:39