@Getter
@AllArgsConstructor
public enum TerminalTypeEnums {
/**
* Moa
*/
MOA("MOA","Moa"),
/**
* PC
*/
PC("PC","流程类和独立类"),
;
/**
* 外部访问。
*/
@JsonValue
@EnumValue
private final String enumeration;
private final String name;
public String getValue() {
ValueOf<TerminalTypeEnums, String> valueOf =
new ValueOf<TerminalTypeEnums, String>(TerminalTypeEnums.class, TerminalTypeEnums::getEnumeration);
//当传来的数据不是枚举中的类型时,可进行以下两种操作
//1、使用valueOf.valueOfOrThrow抛出异常
TerminalTypeEnums pc = valueOf.valueOfOrThrow("PC1");
//2、使用valueOf.valueOfOrDefault返回新的定义值
valueOf.valueOfOrDefault("PC", PC);
//若调用findByDefault方法,则先执行查数据库逻辑,后判断枚举类型中是否有对应值,存在损耗
valueOf.valueOfOrDefault("PC", findByDefault());
//不常用,相当于调用findByDefault方法的逻辑,会先执行某个定义的逻辑,再进行判断
valueOf.valueOfOrOptional("PC1", () -> {
return Optional.of(TerminalTypeEnums.PC);
});
return enumeration;
}
TerminalTypeEnums findByDefault() {
// from db
return PC;
}