// Java enum MyColor{ RED("Hot", 4), BLUE("SAD",8); private String mood; public String getMood{ return mood; } private int index; public int getIndex(){ return index; } private MyColor(String mood, int index){ this.mood = mood; this.index = index; } } System.out.println(MyColor.RED.getMood());
小結:ide
1. 定義枚舉類型本質上就是在定義帶final修飾符的Enum<E>的子類;this
2. 枚舉值本質爲第1點所定義的類的類常量;spa
3. 枚舉值的ordinal值由其定義時的排序決定,而且在編譯時已經被設置好了。code
public enum MyColor{
RED, BLUE(){
@Override
public boolean getFlag(){
return false;
}
};
public boolean getFlag(){
return true;
}
}
// 調用
System.out.println(MyColor.RED.getFlag()); // 顯示true
System.out.println(MyColor.BLUE.getFlag()); // 顯示falseblog
能夠看到枚舉值RED和BLUE同一個方法具備不一樣的行爲。其實這是經過匿名內部類的方式實現的,BLUE的類型爲MyColor$1 extends MyColor,而RED的類型爲MyColor。排序
使用接口組織枚舉 接口
public interface Food { enum Coffee implements Food { BLACK_COFFEE, DECAF_COFFEE, LATTE, CAPPUCCINO } enum Dessert implements Food { FRUIT, CAKE, GELATO } }