Java 列舉(Enum)範例
Enum: Day.SUNDAY。。Day.MONDAY
Enum中文會翻成列舉,它的用途是定義常數與名稱的關系,在程式直接使用名稱來幫助程式可讀性。
Java上比較像C的structure應該就是enum
,如果主力不是Java而不常在使用可能會忘記它的用法,這裡建立名稱為Day
的列畫,內容是星期幾的英文名字,像SUNDAY
、MONDAY
。
基本範例
沒有特別需求,使用預設分配常數值,如下的範例:
//-----------start----------- public enum Day { SUNDAY, MONDAY, SATURDAY } //------------end------------
列舉Day名稱
透過values
取得所有項目,再利用方法name
或 toString
將Day中的名稱印出來:
//-----------start----------- for(Day day: Day.values()) System.out.println(day.name()); } //------------end------------
或
//-----------start----------- for(Day day: Day.values()) { System.out.println(day.toString()); } //------------end------------
輸出結果:
SUNDAY MONDAY SATURDAY
列舉Day值
前面範例只印出Day列舉中的名稱,下面的範例會印出它的名稱及值,藉此可以知道常數值是怎麼分配的:
//-----------start----------- for(Day day: Day.values()) { System.out.println(day.toString() + "=" + day.ordinal()); } //------------end------------
當你宣告列舉時,會依照順序分配一個排序值存入私有變數ordinal
再利用 ordinal()
這個方法取得其值,範例會透過values()
取得所有的列舉物件後再印出ordinal()
值,輸出結果:
SUNDAY=0 MONDAY=1 SATURDAY=2
從輸出結果能知道它的值是由整數值的0開始累加1分配。
進階範例
其實Enum是利用Class、Interface加上Compiler自動生成一些程式碼所組成的,所以你可以在使用你建立的enum之前定義它的變數、方法…等。 下面範例可以指定你定義的enum它實際代表的值為何:
//-----------start----------- public enum Day { SUNDAY(4), MONDAY(5), SATURDAY(11); private int value; private Day(int value) { this.value = value; } public int getValue() { return this.value; } } //------------end------------
列舉Day名稱代表的值
上述程式有實作代表數值部分,如此一來能使用Day.SUNDAY.getValue
取得你定義的值(SUNDAY=11),列舉整個名稱代表的值:
//-----------start----------- for(Day day: Day.values()) { System.out.println("name:" + day.name() + "\nvalue:" + day.getValue()); } //------------end------------
輸出結果:
name:SUNDAY value:4 name:MONDAY value:5 name:SATURDAY value:11
覆寫列舉中的方法
前面介紹的為基本的範例,另外你也可以Override
覆寫方法像是toString
:
//-----------start----------- @Override public String toString() { switch(this) { case SUNDAY: return "Sunday: " + value; case MONDAY: return "Monday: " + value; case SATURDAY: return "Saturday: " + value; default: return null; } } //------------end------------
列舉 Day並使用toString
使用覆寫toString
的新方法印出名稱(第一個字母大寫)、代表的值。
//-----------start----------- for(Day day: Day.values()) { System.out.println(day.toString()); } //------------end------------
輸出結果:
Sunday: 4 Monday: 5 Saturday: 11
參考資料
更新日誌
日期 | 內容 |
---|---|
2017/07/24 | 增加”列舉Day值”及修正文字 |
2015/03/24 | 初版 |
關鍵字
- Java Enum
- Java 列舉
- Java 列舉(Enum)範例