赞
踩
日常搬砖时,遇到这么一个需求:
接口接收数据带有status状态,接口对应的值有1,2,3,4…60。现在需要将status中的3,5,6,8转换为1,2,3,4做一些判断,并存储到另一张表中。
由于数据接收必须全部使用实体接收,公司代码检查较为严格不允许魔法值出现,同时为了维护方便,现在需要使用枚举作为switch-case分支条件。但是常规写法在Java8的编译器将会报错。报错如下:
直接上代码:
定义枚举常量
时,新增方法‘getByCode()’
’遍历枚举所有常量。
public enum TransactionTypeEnum { /** 用户充值 */ SETTLE_ACCOUNTS(3), /** 结算付款(用户缴费结算缴费离场) */ ORDER_FEE_DEDUCTION(5), /** 用户补缴 */ INSPECTOR_PAYBACK(6), ... ... ; @Getter private int code; public static TransactionTypeEnum getByCode(Integer code) { for (TransactionTypeEnum e: TransactionTypeEnum.values()) { if (e.getCode() == code) { return e; } } return null; } }
使用switch
时,将要判断的值status传入getByCode
中得到枚举类型TransactionTypeEnum
。在switch中判断此枚举TransactionTypeEnum
,case中直接使用枚举常量名。
TransactionTypeEnum transactionTypeEnum = TransactionTypeEnum.getByCode(status);
switch (transactionTypeEnum){
case SETTLE_ACCOUNTS :
System.out.println("进入第一个case");
break;
case ORDER_FEE_DEDUCTION:
System.out.println("进入第二个case");
break;
case INSPECTOR_PAYBACK:
System.out.println("进入第三个case");
break;
default:
return;
}
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。