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)范例