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