7

我有一个关于 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;
  }
}
4

3 回答 3

9

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

于 2012-09-28T11:21:51.930 回答
5

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

于 2012-09-28T11:22:26.190 回答
2

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

于 2020-02-28T14:30:04.933 回答