Enum枚举类型
枚举概念
枚举类型是一种特殊的数据类型,它使变量成为一组预定义的常量。变量必须等于为其预定义的值之一。因为它们是常量,枚举类型字段的名称是大写字母。
以星期的日期为例:
public enum Day {
SUNDAY, MONDAY, TUESDAY, WEDNESDAY,
THURSDAY, FRIDAY, SATURDAY
}
// 如果不再添加别的方法,枚举值默认从0开始。即SUNDAY:0, MONDAY:1等
使用
public void testDay(Day day) {
switch (day) {
case SUNDAY:
System.out.println("放假~");
break;
case MONDAY:
System.out.println("星期一,要开始一周的工作了");
break;
case TUESDAY:
case WEDNESDAY:
case THURSDAY:
System.out.println("继续工作");
break;
case FRIDAY:
System.out.println("哈哈~要放假啦~");
break;
case SATURDAY:
System.out.println("放假啦~");
break;
default:
break;
}
}
特性
所有的枚举类型都会隐式的继承java.lang.Enum。所以自定义的枚举类型通常不可以再继承其他的类了。
枚举的方法
java.lang.Enum类声明如下:
public abstract class Enum<E extends Enum<E>>
implements Comparable<E>, Serializable { ... }
values() : 返回enum数组实例,其中该数组中元素与声明的枚举元素次序严格保持相同
name() : 返回实例的值
ordinal() : 返回实例声明时的次序,从0开始
项目中使用枚举简单示例
public enum ThirdPayTypeEnum {
WX(1, "微信"),
AliPay(2, "支付宝"),
UNIONPAY(3, "银联");
private Integer code;
private String name;
ThirdPayTypeEnum(Integer code, String name) {
this.code = code;
this.name = name;
}
public Integer getCode() {
return code;
}
public void setCode(Integer code) {
this.code = code;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public static Optional<ThirdPayTypeEnum> getByCode(final int code) {
return Stream.of(values()).parallel().filter(t -> t.getCode() == code).findAny();
}
}