java使用枚举实现根据一个值查到另外一个(多个)值
在工作应用中,我想经常会用到枚举去表示一组常量,然后往往一个枚举类中会有多个属性,或是属性1的附加属性或是属性1的解释等等…很多业务场景中会用到根据属性1我想知道属性2的值是多少,比如在某个枚举中1是代表星期一 2是代表星期二… 那我想通过1查出“星期一”呢?(其实相当于一个map)看下我常用到的两种方法吧(方法二更好)
方法一:
@Getter
public enum MyExceptionEnum {
MY_EXCEPTION_01("2002","system inner exception");
private String code;
private String msg;
MyExceptionEnum(String code, String msg) {
this.code = code;
this.msg = msg;
}
public static String getMsg(String code) {
for (MyExceptionEnum value : MyExceptionEnum.values()) {
if (value.code.equals(code)) {
return value.msg;
}
}
return null;
}
}
String msg = MyExceptionEnum.getMsg("2002");
方法二:
@Getter
public enum MyExceptionEnum {
MY_EXCEPTION_01("2002","system inner exception");
private String code;
private String msg;
private static HashMap<String, MyExceptionEnum> map;
MyExceptionEnum(String code, String msg) {
this.code = code;
this.msg = msg;
}
static {
HashMap<String, MyExceptionEnum> hashMap = new HashMap<>(MyExceptionEnum.values().length);
for (MyExceptionEnum value : MyExceptionEnum.values()) {
hashMap.put(value.getCode(), value);
}
map = hashMap;
}
public static MyExceptionEnum getEnum(String code) {
return map.get(code);
}
}
MyExceptionEnum anEnum = MyExceptionEnum.getEnum("2002");
System.out.println(anEnum.getMsg());