枚舉是將一組具名的值的有限集合創建爲一種新的類型,而這些具名的值可以作爲常規的程序組件使用,常用來表示一組常數。在Java中,除了不能繼承自一個enum之外,我們基本上可將enum看作一個常規的類。
基本用法:
enum Color {
BLUE, WHITE, GREEN
}
public class EnumTest {
public static void main(String[] args) {
//values()方法返回代表枚舉中所有值的數組
for (Color color : Color.values()) {
printColor(color);
}
//使用valueOf()或者具體名字獲取枚舉值
System.out.println(Color.valueOf("BLUE"));
System.out.println(Color.GREEN);
}
public static void printColor(Color color) {
//name()方法返回枚舉的名字
System.out.print("name: " + color.name());
//ordinal()方法返回枚舉聲明的次序
System.out.print(" ordinal: " + color.ordinal());
//在switch中使用枚舉
switch (color) {
case BLUE:
System.out.println(" RGB code: #0000FF");
break;
case WHITE:
System.out.println(" RGB code: #FFFFFF");
break;
case GREEN:
System.out.println(" RGB code: #008000");
break;
}
}
}
輸出:
name: BLUE ordinal: 0 RGB code: #0000FF
name: WHITE ordinal: 1 RGB code: #FFFFFF
name: GREEN ordinal: 2 RGB code: #008000
BLUE
GREEN
添加屬性,構造函數和方法:
enum Color {
// 調用構造函數初始化枚舉
// 必須先聲明枚舉值再聲明變量和方法
// 如果有變量或者方法,則最後一個枚舉聲明後面必須加分號
BLUE("#0000FF"),
WHITE("#FFFFFF"),
GREEN("#008000");
private String rgbCode;
//構造函數,必須爲private
private Color(String rgbCode){
this.rgbCode = rgbCode;
}
// 枚舉方法
public String getRgbCode(){
return rgbCode;
}
}
public class EnumTest {
public static void main(String[] args) {
for (Color color : Color.values()) {
printColor(color);
}
}
public static void printColor(Color color) {
//調用枚舉的方法
System.out.println(color.name() + ": " + color.getRgbCode());
}
}
輸出:
BLUE: #0000FF
WHITE: #FFFFFF
GREEN: #008000
靜態方法,實例方法與重載:
enum Color {
BLUE {
//覆蓋實例方法
public String getRGBCode() {
return "#0000FF";
}
},
WHITE {
public String getRGBCode() {
return "#FFFFFF";
}
},
GREEN;
//實例方法(也可定義抽象方法讓具體枚舉實現)
public String getRGBCode() {
return "Not Defined.";
}
//靜態方法
public static String getColorInfo(){
return "Color: Blue, White, Green.";
}
}
public class EnumTest {
public static void main(String[] args) {
System.out.println(Color.getColorInfo());
for (Color color : Color.values()) {
System.out.println(color.name() + ": " + color.getRGBCode());
}
}
}
輸出:
Color: Blue, White, Green.
BLUE: #0000FF
WHITE: #FFFFFF
GREEN: Not Defined.