何时创建Enum实例?

时间:2012-09-28 11:21:04

标签: java enums

我对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;
  }
}

3 个答案:

答案 0 :(得分:7)

它是在加载类时创建的,就像任何静态代码块一样。

答案 1 :(得分:4)

当类加载器加载PropName类时。枚举常量是其类的静态最终字段。

答案 2 :(得分:1)

枚举类型的实例在“加载类文件”的最后阶段类加载器子系统中创建,称为 初始化< / em> ,而不是像其他类实例一样在运行时。 它们首先出现在其他静态字段/变量初始化之前,这就是为什么您也不能在枚举的构造函数内部访问静态字段的原因。