版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
Java 中 Switch 结合 枚举使用
Switch
和if
是Java中常用的判断工具,而当出现大量的if-else
时,我们不妨使用Switch和枚举来进行“优化”
举个例子
后端开发时,经常会碰到状态码判断的问题。如果我们用if来判断的话。可能会变成如下:
if(code == 1){
}else if(code == 2){
}else if(code == 3){
}
但是如果使用Switch和枚举的结合体,就会非常方便。
枚举类
@Getter
@AllArgsConstructor
public enum ApiEnum {
SUCCESS(1,"正常"),
ILLEGALITY_ERROR(101,"请求URL错误"),
PARAMETER_ERROR(201,"参数错误"),
AUTHORITY_ERROR(301,"权限错误"),
UNKNOWN_ERROR(null,"未知错误");
/**
* 状态码
*/
private Integer code;
/**
* 信息
*/
private String msg;
/**
* 根据value返回枚举类型,主要在switch中使用
* @param value
* @return
*/
public static ApiEnum getByValue(int value) {
for (ApiEnum code : values()) {
if (code.getCode() == value) {
return code;
}
}
return null;
}
}
使用时,打印日志时,还可以传入枚举类,方便传递msg
switch (ApiEnum.getByValue(jsonObject.getIntValue(STATUS_CODE))) {
case PARAMETER_ERROR:
//业务逻辑
logging(ApiEnum.PARAMETER_ERROR);
break;
case ILLEGALITY_ERROR:
//业务逻辑
logging(ApiEnum.ILLEGALITY_ERROR);
break;
case AUTHORITY_ERROR:
//业务逻辑
logging(ApiEnum.AUTHORITY_ERROR);
break;
default:
//业务逻辑
logging(ApiEnum.UNKNOWN_ERROR);
}
/**
* 打印错误日志
* @param apiEnum
*/
private static void logging(ApiEnum apiEnum) {
log.error("[checkStatus] 调用中经网API 发生异常,code={},msg={}"
, apiEnum.getCode()
, apiEnum.getMsg());
}