根据code值直接获取Enum类型
程序员文章站
2022-09-02 17:29:46
根据code值直接获取Enum类型public enum CupType {BIGCUP(1,"大杯"),MEDIUMCUP(2,"中杯"),LITTLECUP(3,"小杯"),;private int code ;private String msg;CupType (int code ,String msg){ this.code = code; this.msg = msg;}private static Map...
根据code值直接获取Enum类型
通过缓存相应的code以及msg对应的Enum,可以直接通过static方法获取相应的Enum类型,减少每次通过循环vlues来获取对应的枚举值。
public enum CupType {
BIGCUP(1,"大杯"),
MEDIUMCUP(2,"中杯"),
LITTLECUP(3,"小杯"),
;
private int code ;
private String msg;
CupType (int code ,String msg){
this.code = code;
this.msg = msg;
}
private static Map<Integer,CupType> integerCupTypeMap;
private static Map<String ,CupType> stringCupTypeMap;
static{
integerCupTypeMap = Arrays.asList(values()).stream().collect(Collectors.toMap(CupType::getCode, UnaryOperator.identity()));
stringCupTypeMap = Arrays.asList(values()).stream().collect(Collectors.toMap(CupType::getMsg,UnaryOperator.identity()));
}
public static Optional<CupType> getCupTypeByCode(int code){
return Optional.ofNullable(integerCupTypeMap.get(code));
}
public static Optional<CupType> getCupTypeByMsg(String msg){
return Optional.ofNullable(stringCupTypeMap.get(msg));
}
public int getCode() {
return code;
}
public String getMsg() {
return msg;
}
}
通过缓存相应的code以及msg对应的Enum,可以直接通过static方法获取相应的Enum类型,减少每次通过循环vlues来获取对应的枚举值。
测试代码:
public static void main(String[] args) {
Optional<CupType> cupType1 = CupType.getCupTypeByCode(1);
Optional<CupType> cupTypeMsg = CupType.getCupTypeByMsg("小杯");
System.out.println(cupType1.isPresent() ? cupType1.get().getCode() + "代表" +cupType1.get().getMsg() : " 没有取到相应的枚举");
System.out.println(cupType1.isPresent() ? cupTypeMsg.get().getCode() + "代表" +cupTypeMsg.get().getMsg() : " 没有取到相应的枚举");
}
本文地址:https://blog.csdn.net/lianglaowen/article/details/110823886
上一篇: Oracle 函数大全