編譯枚舉類型時(shí),編譯器會(huì)創(chuàng)建一個(gè)類。枚舉類型具有構(gòu)造函數(shù),字段和方法。 枚舉類型僅在編譯器生成的代碼中實(shí)例化。
每個(gè)枚舉類型都隱式地?cái)U(kuò)展java.lang.Enum
類。 Enum
類中定義的所有方法都可以與所有枚舉類型一起使用。
下表列出了在Enum
類中定義的方法。
方法名稱 | 方法描述 |
---|---|
public final String name() | 返回枚舉常量的名稱 |
public final int ordinal() | 返回枚舉常量的順序值 |
public final boolean equals(Object other) | 如果指定的對(duì)象等于枚舉常量,則返回true 。 否則,它返回false 。當(dāng)它們用于兩個(gè)枚舉常量,== 運(yùn)算符和equals() 方法返回相同的結(jié)果。 |
public final int hashCode() | 返回枚舉常量的哈希碼值。 |
public final int compareTo(E o) | 將此枚舉常量與指定的枚舉常量進(jìn)行比較。 它返回此枚舉常量和指定枚舉常量的序數(shù)值的差異。 |
public final Class getDeclaringClass() | 返回聲明枚舉常量的類的對(duì)象。 |
public String toString() | 默認(rèn)情況下,它返回枚舉常量的名稱,與name() 方法相同。 |
public static valueOf(Class enumType, String name) | 返回指定的枚舉類型和名稱的枚舉常量。 |
Level lowLevel = Enum.valueOf(Level.class, "LOW")
以下代碼顯示了如何比較兩個(gè)枚舉常量:
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);
}
}
}
上面的代碼生成以下結(jié)果。
LOW occurs before HIGH