多个枚举传入一个相同的code返回对应的枚举 写法?
看问题:在用Bootstrap写出一个界面后,发现订单状态和支付状态都为0,显然是从数据库中取出来的,但是不可读,如果修改?
最基本的修改方式是添加if语句:
那么这样有问题,不仅在订单状态写if语句,而且还得在支付状态上写,而且一旦添加新的状态,这些就都要改了。
比较好的修改方式是:
1. 在我的DTO中添加每个枚举类对应的方法,用来获取枚举类
2. 再在该对应的枚举类中写方法。
那么这样的话,还是会有一个问题,因为每个枚举类都要写一份一样的代码~
高级的方法:
由于是公共的方法,核心传入int型code值会返回一个枚举值,这样让每个枚举实现一个公共的接口。
public class EnumUtil {
//返回名就是一个枚举
public static <T extends CodeEnum> T getCode(Integer code, Class<T> enumClass){
for(T each : enumClass.getEnumConstants()){
if(code.equals(each.getCode())){
return each;
}
}
return null;
}
}
@JsonIgnore
public OrderStatusEnum getOrderStatusEnum(){
return EnumUtil.getCode(orderStatus, OrderStatusEnum.class);
}
@JsonIgnore
public PayStatusEnum getPayStatusEnum(){
return EnumUtil.getCode(payStatus, PayStatusEnum.class);
}
在OrderDTO添加两个方法就可以了。
那么得到的结果:
c