我对Java中的Enums
有一个简单的问题请参考以下代码。像PropName .CONTENTS
这样的实例何时被实例化?
public enum PropName {
CONTENTS("contents"),
USE_QUOTES("useQuotes"),
ONKEYDOWN("onkeydown"),
BROWSER_ENTIRE_TABLE("browseEntireTable"),
COLUMN_HEADINGS("columnHeadings"),
PAGE_SIZE("pageSize"),
POPUP_TITLE("popupTitle"),
FILTER_COL("filterCol"),
SQL_SELECT("sqlSelect"),
;
private String name;
private PropName(String name) {
this.name = name;
}
public String getName() {
return name;
}
}
答案 0 :(得分:7)
它是在加载类时创建的,就像任何静态代码块一样。
答案 1 :(得分:4)
当类加载器加载PropName类时。枚举常量是其类的静态最终字段。
答案 2 :(得分:1)
枚举类型的实例在“加载类文件”的最后阶段的类加载器子系统中创建,称为 初始化< / em> ,而不是像其他类实例一样在运行时。 它们首先出现在其他静态字段/变量初始化之前,这就是为什么您也不能在枚举的构造函数内部访问静态字段的原因。