一、枚舉
1.1 為什么需要枚舉
問題:要定義星期幾或性別的變量,該怎么定義?個假設(shè)用1-7分別表示星期一到星期日,但有人可能會寫成 int weekday=0
>枚舉就是要讓某個類型的變量的取值只能為若千個固定值中的一個,否則編譯普遍就會報錯。校舉可以讓編譯器在編譯時就可以控制源程序中填寫的非法值,普通變量的方式在開發(fā)階段無法實現(xiàn)這一目標。
1.2 java5的枚舉的基本應(yīng)用

name 方法返回枚舉對象的名稱。自己實現(xiàn)了 toString方法。
ordinal()方法枚舉對象的位置信息。從0開始
valueOf() 返回對應(yīng)的枚舉對象。
values() 返回一個枚舉數(shù)組,將該枚舉的所有對象都返回。這樣就能夠遍歷enum實例。
在創(chuàng)建enum時,編譯器會自動生成一個相關(guān)類,這個類繼承java.lang.Enum
1.3 實現(xiàn)帶有構(gòu)造方法的枚舉

元素列表必須位于其他元素之前。且用分號隔開。
且枚舉類的構(gòu)造方法必須是private的。如果不寫也默認是private.
在枚舉類后面使用()傳入指定參數(shù)來指定需要調(diào)用那個構(gòu)造方法。 其中空()表示默認構(gòu)造方法。
1.4 實現(xiàn)帶有抽象方法的枚舉
內(nèi)部類可以加訪問修飾符。而外部類則只能是默認和public
代碼://帶有抽象方法的枚舉
import java.util.Date;
public class EnumTest {
? ? public static void main(String[] args) {
}
? ? public enum WeekDay{
? ? ? ? SUN(1),MON(),TUE,WED,THI,FRI,SAT;
? ? ? ? private WeekDay(){System.out.println("first");}
? ? ? ? private WeekDay(int day){System.out.println("second");}
? ? }
? ? public enum TrafficLamp{
? ? ? ? RED(30){
? ? ? ? ? ? public? TrafficLamp nextLamp(){
? ? ? ? ? ? ? ? return GREEN;
? ? ? ? ? ? }
? ? ? ? },
? ? ? ? GREEN(45){
? ? ? ? ? ? public? TrafficLamp nextLamp(){
? ? ? ? ? ? ? ? return YELLOW;
? ? ? ? ? ? }? ? ? ? ?
? ? ? ? },
? ? ? ? YELLOW(5){
? ? ? ? ? ? public? TrafficLamp nextLamp(){
? ? ? ? ? ? ? ? return RED;
? ? ? ? ? ? }? ? ? ? ?
? ? ? ? };
? ? ? ? public abstract TrafficLamp nextLamp();
? ? ? ? private int time;
? ? ? ? private TrafficLamp(int time){this.time = time;}
? ? }
}