问题
在开发中,如果有多种条件的话,往往会使用多个if-else,看起来较为混乱,逻辑不够清楚,那么有什么好的方法解决呢?
解决
枚举enum与switch的配合使用。
代码示例
switch
String thisCode = "1";
switch (Objects.requireNonNull(ABC.getByValue(thisCode))) {
case A:
log.info(thisCode);
break;
case B:
log.info(thisCode);
break;
case C:
log.info(thisCode);
break;
case D:
log.info(thisCode);
break;
default:
return;
}
enum
public enum ABC {
A("1"),
B("2"),
C("3"),
D("4");
ABC(String code) {
this.code = code;
}
private final String code;
public String getCode() {
return code;
}
/**
* 数据较少直接循环,大量数据可考虑hashMap
*
* @param value value
* @return 根据value返回枚举类型
*/
public static ABC getByValue(String value) {
for (ABC abc : values()) {
if (abc.getCode().equals(value)) {
return abc;
}
}
return null;
}
}
扩展
枚举enum中的values()方法
values()方法可以将枚举类转变为一个枚举类型的数组,因为枚举中没有下标,我们没有办法通过下标来快速找到需要的枚举类,这时候,转变为数组之后,我们就可以通过数组的下标,来找到我们需要的枚举类。