編譯列舉型別時,編譯器會建立一個類。列舉型別具有建構函式,欄位和方法。 列舉型別僅在編譯器生成的程式碼中範例化。
每個列舉型別都隱式地擴充套件java.lang.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