Java Enum類

枚舉類型的超類

編譯枚舉類型時,編譯器會創建一個類。枚舉類型具有構造函數,字段和方法。 枚舉類型僅在編譯器生成的代碼中實例化。

每個枚舉類型都隱式地擴展java.lang.Enum類。 Enum類中定義的所有方法都可以與所有枚舉類型一起使用。

Enum類

下表列出了在Enum類中定義的方法。

方法名稱

方法描述

public final String name()

返回枚舉常量的名稱

public final int ordinal()

返回枚舉常量的順序值

public final boolean equals(Object other)

如果指定的對象等於枚舉常量,則返回true。 否則,它返回false。當它們用於兩個枚舉常量,==運算符和equals()方法返回相同的結果。

public final int hashCode()

返回枚舉常量的哈希碼值。

public final int compareTo(E o)

將此枚舉常量與指定的枚舉常量進行比較。 它返回此枚舉常量和指定枚舉常量的序數值的差異。

public final Class getDeclaringClass()

返回聲明枚舉常量的類的對象。

public String toString()

默認情況下,它返回枚舉常量的名稱,與name()方法相同。

public static valueOf(Class enumType, String name)

返回指定的枚舉類型和名稱的枚舉常量。

示例

Level  lowLevel = Enum.valueOf(Level.class, "LOW")

以下代碼顯示瞭如何比較兩個枚舉常量:

enum Level {
  LOW, MEDIUM, HIGH, URGENT;
}

public class Main {
  public static void main(String[] args) {
    Level s1 = Level.LOW;
    Level s2 = Level.HIGH;

    // s1.compareTo(s2) returns s1.ordinal() - s2.ordinal()
    int diff = s1.compareTo(s2);
    if (diff > 0) {
      System.out.println(s1 + "  occurs after  " + s2);
    } else {
      System.out.println(s1 + "  occurs before " + s2);
    }

  }
}

上面的代碼生成以下結果。

LOW  occurs before HIGH