當前位置:才華齋>計算機>java語言>

Java為什麼要列舉

java語言 閱讀(3.23W)

導語:每個元素分別用一個公有的靜態成員變量表示,再組合成類,下面是關於Java語言列舉的原因,歡迎參考!

Java為什麼要列舉

問題:要定義星期幾或性別的變數,該怎麼定義?假設用1-7分別表示星期一到星期日,

但有人可能會寫成int weekday = 0;或即使使用常量方式也無法阻止意外。

列舉就是要讓某個型別的變數的取值只能為若干個固定值中的一個,否則,編譯器就會報錯。

列舉可以讓編譯器在編譯時就可以控制源程式中填寫的非法值,

普通變數的方式在開發階段無法實現這一目標

**用普通類如何實現列舉的功能?定義一個Weekday類來模擬實現:

  步驟:

*私有化構造方法

*每個元素分別用一個公有的靜態成員變量表示(public static final)

*可以有若干公有方法或抽象方法。採用抽象方法定義nextDay就將大量的語句

轉移成了一個個獨立的類。

  **列舉的應用:

舉例:定義一個Weekday的列舉。

擴充套件:列舉類的values,valueOf,name,toString,ordinal等方法

(記住,講課時要先於自定義方法前介紹,講課更流暢)

總結:列舉是一種特殊的類,其中的'每個元素都是該類的一個例項物件。

例如可以呼叫lass()ame和ame()。

  **列舉的高階應用:

**列舉就相當於一個類,其中也可以定義構造方法、成員變數、普通方法和抽象方法。

**列舉元素必須位於列舉體中的最開始部分,列舉元素列表的後要有分號與其他成員分隔。

把列舉中的成員方法或變數等放在列舉元素的前面,編譯器報告錯誤。

  **帶構造方法的列舉

構造方法必須定義成私有的

如果有多個構造方法,該如何選擇哪個構造方法?

列舉元素MON和MON()的效果一樣,都是呼叫預設的構造方法。

  **帶方法的列舉

定義列舉TrafficLamp

實現普通的next方法

實現抽象的next方法:每個元素分別是由列舉類的子類來生成的例項物件,

這些子類採用類似內部類的方式進行定義。增加上表示時間的構造方法

**列舉只有一個成員時,就可以作為一種單例的實現方式。