为了代码的可读性和可维护性,我们经常需要在项目中构建枚举类,而不是直接使用code+message的形式,本文简要记录一下本人在项目中常用的方式。
此类为判断一个服务器上引擎状态是否可用的枚举类,具体操作见以下代码及注释:
/**
* 算法资源枚举类
*/
public enum ResourceStatusEnum {
/**
* 1
* 正常
*/
NORMAL(1, "正常"),
/**
* 2
* 告警(训练引擎不可用)
*/
ALARM_TRAINING(2, "告警(训练引擎不可用)"),
/**
* 3
* 告警(推理引擎不可用)
*/
ALARM_INFERENCE(3, "告警(推理引擎不可用)"),
/**
* 4
* 告警(推理引擎、训练引擎均不可用)
*/
ALARM_BOTH(4, "告警(推理引擎、训练引擎均不可用)");
private Integer code;
private String message;
/**
* 构造方法
*
* @param code code
* @param message message
*/
ResourceStatusEnum(Integer code, String message) {
this.code = code;
this.message = message;
}
/**
* 根据code返回对应枚举类
*
* @param code code
* @return
*/
public static ResourceStatusEnum getEnumByCode(Integer code) {
return getEnum(statusEnum -> statusEnum.getCode() == code);
}
/**
* 使用Java8新特性函数式接口判断并返回对应枚举
*
* @param function
* 判断条件
* @return 枚举
*/
public static ResourceStatusEnum getEnum(Predicate<ResourceStatusEnum> function){
for (ResourceStatusEnum statusEnum : ResourceStatusEnum.values()) {
if (function.test(statusEnum)) {
return statusEnum;
}
}
return null;
}
public Integer getCode() {
return code;
}
public String getMessage() {
return message;
}
}
评论区