1.創建枚舉接口
public interface CodeEnum { Integer getCode(); }
2. 枚舉類實現接口
public enum OrderStatusEnum implements CodeEnum{ NEW(0, "新訂單"), FINISHED(1, "完結"), CANCEL(2, "已取消") ; private Integer code; private String message; private OrderStatusEnum(Integer code, String message) { this.code = code; this.message = message; }
//通過code獲取enum
` public static testEnum getbycode(int index) {
for(testEnum tEnum : values()) {
if(tEnum.getCode() == index) {
return tEnum ;
}
}
return null;
}
}
3.工具類中實現
/**
* 通過code編碼獲取message信息
*/
public class EnumUtil {
/**
* 通過code編碼獲取枚舉對象
* @param code 枚舉的編碼
* @param tClass 枚舉類
* @param <T>
* @return
*/
public static<T extends CodeEnum> T getByCode(Integer code, Class<T> tClass){
for(T each:tClass.getEnumConstants()){
if(code.equals(each.getCode())){
return each;
}
}
return null;
}
}
4. 例子
@Data public class OrderDto { private String orderId; private String buyerOpenid; private String buyerAddress; private String buyerPhone; private String buyerName; private BigDecimal orderAmount; private Integer payStatus; private Integer orderStatus; @JsonSerialize(using=Date2LongSerializer.class) private Date updateTime; @JsonSerialize(using=Date2LongSerializer.class) private Date createTime; List<OrderDetail> orderDetailList = new ArrayList(); /** 一共多少條數據*/ private Integer amount; @JsonIgnore //將對象轉為json格式時,忽略此方法 public OrderStatusEnum getOrderStatusEnum(){ return EnumUtil.getByCode(orderStatus,OrderStatusEnum.class); } @JsonIgnore public PayStatusEnum getPayStatusEnum(){ return EnumUtil.getByCode(payStatus,PayStatusEnum.class); } }