一個(gè)枚舉類型的典型例子:
?public enum Size{ SMALL, MEDIUM, LARGE, EXTRA_LARGE};
實(shí)際上,這個(gè)聲明定義的類型是一個(gè)類,它剛好有 4 個(gè)實(shí)例,不可能構(gòu)造新的對(duì)象。
因此,在比較兩個(gè)枚舉類型的值時(shí),并不需要調(diào)用 equals,直接使用 “==” 就可以了。
如果需要的話,可以為枚舉類型增加構(gòu)造器、方法和字段。當(dāng)然,構(gòu)造器只是在構(gòu)造枚舉常量的時(shí)候調(diào)用。下面是一個(gè)示例:
enum Size{
SMALL("S", 0), MEDIUM("M", 1), LARGE("L", 2), EXTRA_LARGE("XL", 3);
private String abbreviation;
private int index;
private Size(String abbreviation, int index) {
this.abbreviation = abbreviation;
this.index = index;
}
public String getAbbreviation() {
return abbreviation;
}
public void setAbbreviation(String abbreviation) {
this.abbreviation = abbreviation;
}
public int getIndex() {
return index;
}
public void setIndex(int index) {
this.index = index;
}
}
public class Testing {
public static void main(String[] args) {
Size size = Enum.valueOf(Size.class, "EXTRA_LARGE");
System.out.println("Size = " + size.toString());
System.out.println("abbreviation = " + size.getAbbreviation());
System.out.println("index = " + size.getIndex());
System.out.println("ordinal = " + size.ordinal());
if(size == Size.EXTRA_LARGE) {
System.out.println("Good job you paid attention to the _.");
}
}
}
輸出:
Size = EXTRA_LARGE
abbreviation = XL
index = 4
ordinal = 3
Good job you paid attention to the _.
枚舉的構(gòu)造器總是私有的。可以省略 private 修飾符。如果聲明一個(gè) enum 構(gòu)造器為 public 和 protected,會(huì)出現(xiàn)語法錯(cuò)誤。
所有的枚舉類型都是 Enum 類的子類。它們繼承了這個(gè)類的許多方法。其中最有用的一個(gè)是 toString,這個(gè)方法會(huì)返回枚舉常量名。例如,Size.SMALL.toString() 將返回字符串 “SMALL”。
toString 的逆方法是靜態(tài)方法 valueOf。 例如,語句:
?Size s = Enum.valueOf(Size.class, "SMALL");
將 s 設(shè)置成 Size.SMALL。
每個(gè)枚舉類型都有一個(gè)靜態(tài)的 values 方法,它將返回一個(gè)包含全部枚舉值的數(shù)組。
Size[] arr = Size.values();
System.out.println(Arrays.toString(arr));
打?。?br>
?[SMALL, MEDIUM, LARGE, EXTRA_LARGE]
ordinal 方法返冋 enum 聲明中枚舉常量的位置,位置從 0 開始計(jì)數(shù)。例如:Size.MEDIUM.ordinal() 返回 1。
注釋: Enum 類有一個(gè)類型參數(shù),不過為了簡單起見省略了這個(gè)類型參數(shù)。例如,實(shí)際上枚舉類型 Size 擴(kuò)展了 Enum<Size>。類型參數(shù)會(huì)在 compareTo 方法中使用。
java.long.Enmu<E> 5.0
- static Enmu valueOf(Calss enumClass, String name)
返回給定類中指明名字的枚舉常量。
- String toString()
返回枚舉常量名。
- int ordinal()
返回枚舉常量在 enum 聲明中的位置,位置從 0 開始計(jì)數(shù)。
- int compareTo(E other)
如果枚舉常量出現(xiàn)在 other 之前,則返回一個(gè)負(fù)值;如果 this==other,則返回 0;否則,返回正整數(shù)。枚舉常量的出現(xiàn)次序在 enum 聲明中給出。