Module java.base
Package java.lang

Class Enum<E extends Enum<E>>

java.lang.Object
java.lang.Enum<E>
类型参数:
E - 枚举子类的类型
所有实现的接口:
Serializable, Comparable<E>, Constable

public abstract class Enum<E extends Enum<E>> extends Object implements Constable, Comparable<E>, Serializable
这是所有Java语言枚举类的通用基类。有关枚举的更多信息,包括编译器合成的隐式声明方法的描述,请参阅《Java语言规范》第8.9节。枚举类都是可序列化的,并且通过序列化机制接收特殊处理。用于枚举常量的序列化表示不能自定义。声明的方法和字段,否则会与序列化交互的字段将被忽略,包括serialVersionUID;有关详细信息,请参阅《Java对象序列化规范》。

请注意,当将枚举类型用作集合的类型或映射中的键的类型时,可以使用专门和高效的setmap实现。

参见 Java语言规范:
8.9 枚举类
8.9.3 枚举成员
自 JDK 版本:
1.5
外部规范
另请参见:
  • Nested Class Summary

    Nested Classes
    Modifier and Type
    Class
    Description
    static final class 
    Enum.EnumDesc<E extends Enum<E>>
    一个enum常量的名义描述符。
  • Constructor Summary

    Constructors
    Modifier
    Constructor
    Description
    protected
    Enum(String name, int ordinal)
    唯一的构造函数。
  • Method Summary

    Modifier and Type
    Method
    Description
    protected final Object
    clone()
    抛出 CloneNotSupportedException。
    final int
    compareTo(E o)
    将此枚举与指定对象进行比较以确定顺序。
    如果可以构造此实例的枚举描述符EnumDesc,则返回该描述符,否则返回一个空的Optional
    final boolean
    equals(Object other)
    如果指定对象等于此枚举常量,则返回true。
    protected final void
    已弃用,将来会移除: 该API元素可能会在将来的版本中被移除。
    终结已被弃用以供移除。
    final Class<E>
    返回与此枚举常量的枚举类型对应的Class对象。
    final int
    返回此枚举常量的哈希码。
    final String
    name()
    返回此枚举常量的名称,与其在枚举声明中声明的名称完全相同。
    final int
    返回此枚举常量的顺序(在其枚举声明中的位置,其中初始常量被分配为零)。
    返回此枚举常量的名称,与声明中包含的名称相同。
    static <T extends Enum<T>>
    T
    valueOf(Class<T> enumClass, String name)
    返回具有指定名称的指定枚举类的枚举常量。

    Methods declared in class java.lang.Object

    getClass, notify, notifyAll, wait, wait, wait
  • Constructor Details

    • Enum

      protected Enum(String name, int ordinal)
      唯一的构造函数。程序员不能调用此构造函数。它是由编译器根据枚举类声明生成的代码使用的。
      参数:
      name - 此枚举常量的名称,用于声明它的标识符。
      ordinal - 此枚举常量的顺序(在枚举声明中的位置,其中初始常量被分配为零)。
  • Method Details

    • name

      public final String name()
      返回此枚举常量的名称,与其在枚举声明中声明的名称完全相同。大多数程序员应该优先使用toString()方法,因为toString方法可能返回一个更用户友好的名称。 此方法主要设计用于在正确性取决于获取确切名称的专门情况中使用,该名称不会因发布版本而变化。
      返回:
      此枚举常量的名称
    • ordinal

      public final int ordinal()
      返回此枚举常量的顺序(在其枚举声明中的位置,其中初始常量被分配为零)。大多数程序员不会使用此方法。它设计用于由复杂的基于枚举的数据结构使用,例如EnumSetEnumMap
      返回:
      此枚举常量的顺序
    • toString

      public String toString()
      返回此枚举常量的名称,如声明中包含的名称。此方法可能会被覆盖,尽管通常不是必要或可取的。当存在更“程序员友好”的字符串形式时,枚举类应该覆盖此方法。
      覆盖:
      toString 在类 Object
      返回:
      此枚举常量的名称
    • equals

      public final boolean equals(Object other)
      如果指定对象等于此枚举常量,则返回true。
      覆盖:
      equals 在类 Object
      参数:
      other - 用于与此对象比较相等的对象。
      返回:
      如果指定对象等于此枚举常量,则返回true。
      另请参见:
    • hashCode

      public final int hashCode()
      返回此枚举常量的哈希码。
      覆盖:
      hashCode 在类 Object
      返回:
      此枚举常量的哈希码。
      另请参见:
    • clone

      protected final Object clone() throws CloneNotSupportedException
      抛出 CloneNotSupportedException。这确保了枚举永远不会被克隆,这对于保留它们的“单例”状态是必要的。
      覆盖:
      clone 在类 Object
      返回:
      (永不返回)
      抛出:
      CloneNotSupportedException - 如果对象的类不支持Cloneable接口。覆盖clone方法的子类也可以抛出此异常,以指示实例无法被克隆。
      另请参见:
    • compareTo

      public final int compareTo(E o)
      将此枚举与指定对象进行比较以确定顺序。返回负整数、零或正整数,以指示此对象是否小于、等于或大于指定对象。枚举常量只能与相同枚举类型的其他枚举常量进行比较。此方法实现的自然顺序是常量声明的顺序。
      指定者:
      compareTo 在接口 Comparable<E extends Enum<E>>
      参数:
      o - 要比较的对象。
      返回:
      一个负整数、零或正整数,表示此对象是否小于、等于或大于指定对象。
    • getDeclaringClass

      public final Class<E> getDeclaringClass()
      返回与此枚举常量的枚举类型对应的Class对象。两个枚举常量 e1 和 e2 属于相同的枚举类型,当且仅当 e1.getDeclaringClass() == e2.getDeclaringClass()。(对于具有特定常量特定类主体的枚举常量,此方法返回的值可能与Object.getClass()方法返回的值不同。)
      返回:
      与此枚举常量的枚举类型对应的Class对象
    • describeConstable

      public final Optional<Enum.EnumDesc<E>> describeConstable()
      如果可以构造此实例的枚举描述符EnumDesc,则返回该描述符,否则返回一个空的Optional
      指定者:
      describeConstable 在接口 Constable
      返回:
      包含生成的名义描述符的Optional,或者如果无法构造则返回一个空的Optional
      自 JDK 版本:
      12
    • valueOf

      public static <T extends Enum<T>> T valueOf(Class<T> enumClass, String name)
      返回指定枚举类中指定名称的枚举常量。名称必须与在此类中用于声明枚举常量的标识符完全匹配。(不允许存在多余的空白字符。)

      请注意,对于特定的枚举类T,可以使用该枚举上隐式声明的public static T valueOf(String)方法,而不是使用此方法从名称映射到相应的枚举常量。可以通过调用该类的隐式public static T[] values()方法来获取枚举类的所有常量。

      类型参数:
      T - 要返回其常量的枚举类
      参数:
      enumClass - 要返回常量的枚举类的Class对象
      name - 要返回的常量的名称
      返回:
      指定枚举类中指定名称的枚举常量
      抛出:
      IllegalArgumentException - 如果指定的枚举类没有具有指定名称的常量,或指定的类对象不表示枚举类
      NullPointerException - 如果enumClassname为null
      自版本:
      1.5
    • finalize

      @Deprecated(since="18", forRemoval=true) protected final void finalize()
      Deprecated, for removal: This API element is subject to removal in a future version.
      Finalization has been deprecated for removal. See Object.finalize() for background information and details about migration options.
      枚举类不能有finalize方法。
      覆盖:
      finalize 在类 Object
      参见: