Java枚举类用于声明一组有限的常量,格式如下:
//Java枚举类默认继承了 java.lang.Enum 类,并实现了 java.lang.Serializable 和 java.lang.Comparable 两个接口。
public enum DayOfWeek {
MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY, SUNDAY;
}
1、枚举类默认提供了名称(name) 和 枚举序数(ordinal)两个属性,分别通过name()和ordinal()方法可以访问到:
for (DayOfWeek value : DayOfWeek.values()) {
//枚举序数
int ordinal = value.ordinal();
//枚举名称
String name = value.name();
System.out.println( value + "------- ordinal = " + ordinal + "; name = " + name );
}
输出结果:
MONDAY------- ordinal = 0; name = MONDAY
TUESDAY------- ordinal = 1; name = TUESDAY
WEDNESDAY------- ordinal = 2; name = WEDNESDAY
THURSDAY------- ordinal = 3; name = THURSDAY
FRIDAY------- ordinal = 4; name = FRIDAY
SATURDAY------- ordinal = 5; name = SATURDAY
SUNDAY------- ordinal = 6; name = SUNDAY
2、当默认属性不能完全描述一个枚举对象时,我们可以添加自定义属性,同时提供带参数的构造方法:
public enum DayOfWeek {
SUNDAY("日","sun"),
MONDAY("一","mon"),
TUESDAY("二","tue"),
WEDNESDAY("三","wed"),
THURSDAY("四","thu"),
FRIDAY("五","fri"),
SATURDAY("六","sat");
//自定义属性
public String text;
public String code;
//提供两个参数的构造方法
DayOfWeek(String text, String code) {
this.text = text;
this.code = code;
}
}
访问自定义属性:
DayOfWeek.MONDAY.text;
3、枚举类中valueOf() 方法,可以返回指定字符串值的枚举常量,不存在时会报错IllegalArgumentException ,例如:
// 使用 valueOf() 返回枚举常量
DayOfWeek.valueOf("SUNDAY");
4、Jdk 1.5之后 switch语句支持枚举值,例:
// DayOfWeek dayOfWeek = null;
switch (dayOfWeek){
// case DayOfWeek.SUNDAY: 这样写会报错:An enum switch case label must be the unqualified name of an enumeration constant
// System.out.println("11");
// break;
case SUNDAY://必须这样写
System.out.println("11");
break;
case MONDAY:
System.out.println("22");
break;
...
default:
break;
}