Java 中 Switch 结合 枚举使用

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接: https://blog.csdn.net/LitongZero/article/details/100122691

Java 中 Switch 结合 枚举使用

Switchif是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());
    }

猜你喜欢

转载自blog.csdn.net/LitongZero/article/details/100122691