Java 枚舉
1. 枚舉概述
**枚舉是一個被命名的常數的集合,用于聲明一組帶辨別符的常數。**枚舉在日常生活中很常見,例如一個人的性别隻能是“男” 或者“女”,一周的星期隻能是7天中的一個等。
類似這種當一個變量有幾種固定可能的取值時,就可以将它定義為枚舉類型。在
JDK 1.5
之前沒有枚舉類型,那時候一般用接口常量來替代。而使用 Java枚舉類型
enum
可以更貼近地表示這種常量。
枚舉類的使用場景:
類的對象是有限個,确定的。
例如:
星期:Monday(星期一)······ Sunday(星期天)
性别:Man(男)······· Woman(女)
季節:Spring(春)······· Winter(冬)
·········
當需要一組常量時,可以使用枚舉。
2. 聲明枚舉
聲明枚舉時必須使用
enum
關鍵字,然後定義枚舉的名稱、可通路性、基礎類型和成員等。
任意兩個枚舉成員不能具有相同的名稱,且它的常數值必須在該枚舉的基礎類型的範圍之内,多個枚舉成員之間使用逗号分隔。
一個跟星期有關的枚舉示例:
public enum Weekday {
SUN(0,"星期天"),
MON(1,"星期一"),
TUS(2,"星期二"),
WED(3,"星期三"),
THU(4,"星期四"),
FRI(5,"星期五"),
SAT(6,"星期六");
private int weekNum;
private String weekName;
private Weekday(int weekNum,String weekName){
this.setWeekNum(weekNum);
this.setWeekName(weekName);
}
public String getWeekName() {
return weekName;
}
public void setWeekName(String weekName) {
this.weekName = weekName;
}
public int getWeekNum() {
return weekNum;
}
public void setWeekNum(int weekNum) {
this.weekNum = weekNum;
}
}
測試:
public class Test {
public static void main(String[] args) {
Weekday weekday = Weekday.MON;
System.out.println(weekday);
//System.out.println(weekday.toString());
Weekday[] values = Weekday.values();
for(Weekday w : values){
System.out.println(w);
}
test(Weekday.MON);
}
// 在switch語句中使用枚舉
public static void test(Weekday w){
switch (w) {
case SUN:
System.out.println(w.getWeekName());
break;
case MON:
System.out.println(w.getWeekName());
break;
case THU:
System.out.println(w.getWeekName());
break;
case WED:
System.out.println(w.getWeekName());
break;
case TUS:
System.out.println(w.getWeekName());
break;
case FRI:
System.out.println(w.getWeekName());
break;
case SAT:
System.out.println(w.getWeekName());
break;
}
}
}