枚举类
枚举(列举)类定义:有限个,确定的。
通常在我们定义一组常量时,建议使用枚举类。
举例:
星期:Monday(星期一)、…、Sunday(星期天)
性别:Man(男)、Woman(女)
季节:Spring(春节)…Winter(冬天)
线程状态:创建、就绪、运行、阻塞、死亡
枚举类的使用:
关键字:enum 用于定义枚举类。
使用说明:
- 使用 enum 定义的枚举类默认继承了 java.lang.Enum类,因此不能再继承其他类。
- 枚举类的构造器只能使用 private 权限修饰符,枚举类的所有实例必须在枚举类中显式列出, 多个对象之间用",“隔开,末尾对象用”;"结束。详情看最后的代码。列出的实例,系统会自动添加 public static final 修饰。
- 必须在枚举类的第一行声明枚举类对象
- JDK 1.5 中可以在 switch 表达式中使用Enum定义的枚举类的对象作为表达式, case 子句可以直接使用枚举值的名字, 无需添加枚举类作为限定。
代码;
public enum SeasonEnum {
SPRING("春天","春风又绿江南岸"),
SUMMER("夏天","映日荷花别样红"),
AUTUMN("秋天","秋水共长天一色"),
WINTER("冬天","窗含西岭千秋雪");
private final String seasonName;
private final String seasonDesc;
private SeasonEnum(String seasonName, String seasonDesc) {
this.seasonName = seasonName;
this.seasonDesc = seasonDesc;
}
public String getSeasonName() {
return seasonName;
}
public String getSeasonDesc() {
return seasonDesc;
}
}
Enum类的主要方法:
- values()方法:返回枚举类型的对象数组。该方法可以很方便地遍历所有的枚举值。
- valueOf(String str):可以把一个字符串转为对应的枚举类对象。要求字符串必须是枚举类对象的“名字”。如不是,会有运行时异常:
IllegalArgumentException。 - toString():返回当前枚举类对象常量的名称
枚举类实现接口:
1.和普通 Java 类一样,枚举类可以实现一个或多个接口。
2.若每个枚举值在调用实现的接口方法呈现相同的行为方式,则只
要统一实现该方法即可。
3.若需要每个枚举值在调用实现的接口方法呈现出不同的行为方式,
则可以让每个枚举值分别来实现该方法。