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;
}
}
}