1.枚举类定义
说明
JDK1.5 才开始有枚举类型,同时 Java 组织丰富了 switch 语句:支持枚举。
定义一个枚举类 DeviceType
```
import lombok.Getter;
/**
* 个人安全行业的设备类型
*/
@Getter
public enum DeviceType {
//枚举类型
SOS_ALARM(0, "SOS报警器"),
GPS_TRACKER(1, "GPS跟踪器"),
SOS_GPS_ALARM(2, "SOS+GPS报警器");
//属性值:即此枚举类,有code与描述name
int code;
String name;
//构造方法
DeviceTypeSafetyEnum(int code, String name) {
this.code = code;
this.name = name;
}
//根据枚举类的 code 值,获取枚举类型;当枚举类与switch结合使用时,此方法是必须的
public static DeviceTypeEnum getEnumByKey(int key) {
for (DeviceTypeSafetyEnum deviceType : DeviceTypeSafetyEnum.values()) {
if (key == deviceType.code) {
return deviceType;
}
}
return null;
}
//根据code值,获取当前枚举类的描述
public static String getValueByKey(int key) {
for (DeviceTypeSafetyEnum deviceType : DeviceTypeSafetyEnum.values()) {
if (key == deviceType.code) {
return deviceType.name;
}
}
return null;
}
```
结合 switch 语句使用
说明
在switch中使用通常需要先获取枚举类型才判断,因为case中是常量或者int、byte、short、char,写其他代码编译是不通过的
示例
int code = 2;
switch ( DeviceType.getEnumByKey(code) ) {
case SOS_ALARM:
log.info(DeviceType.getValueByKey(code));
break;
case GPS_TRACKER:
//...
break;
case SOS_GPS_ALARM:
//...
break;
default:
}