---------------------- android培訓、java培訓、期待與您交流! ----------------------
枚舉類型在看來張老師的交通燈和銀行調度系統後給我的感覺頗深,必須表達一下。
枚舉類型在以前學習c++的時候感覺不深,因為只學了點皮毛,在接觸到java的枚舉後我很驚訝,原來枚舉也是可以有構造方法和抽象方法的,所以不得不談談枚舉。
枚舉類型在張老師的交通燈的項目中發揮了他強大的作用,在銀行調度系統中又再次出現,所有我想,如果不用枚舉,問題將不可能那麼簡單就解決了,同時也更加深刻的意識到了枚舉在java編程中的重要性,所以必須對枚舉有個更深的瞭解,而不是僅僅停留在以前的枚舉是一個常量,當第一個值時等於1的時候,後面的值會自動遞增。
Java的枚舉的每個元素都是一個對象,如
public enum WeekDay{SUN,MON,TUE,WED,THI,FRI,SAT}
中SUN,MON等都是WeekDay的一個對象,既然是對象,WeekDay中的方法SUN都會有,如
public enum WeekDay{SUN,MON,TUE,WED,THI,FRI,SAT;public WeekDay nextDay(){switch(this){case SUN:return MON;case MON:return TUE;case TUE:return WED;case WED:return THI;case THI:return FRI;case FRI:return SAT;case SAT:return SUN;}return null;}}
定義了nextday的方法,運行下面語句
WeekDay a = WeekDay.FRI;System.out.println(a.nextDay());
輸出的是SAT。
同樣的,枚舉元素既然是枚舉類的對象,那麼如果在WeekDay 中定義有參的建構函式,傳入String類型的參數,那麼有SUN(“ID”)也就不奇怪了,這裡也不示範了。但是有一點要主要,枚舉類的構造方法要定義成私人的,那樣,就說明該類不能在外部執行個體化對象,也就是你不能在WeekDay外在弄個枚舉元素SUN1,這樣是不行的。其實但我們在WeekDay中定義一個SUN時,其實就是相當於WeekDay SUN= new WeekDay(),這種只允許在其內部執行個體話對象的方法很容易讓人想到單例,這樣一想,如果枚舉類型中只有一個枚舉元素時,那就是單例。Java的枚舉類型其實就是經過特殊處理的類。雖然如此,枚舉的重要性不可低估,不然sun公司就不會說丟掉c和c++的累贅的枚舉後又重新找他回來。
---------------------- android培訓、java培訓、期待與您交流! ----------------------
詳細請查看:edu.csdn.net/heima