根据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(St