java獲取枚舉對象


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);
    }

}

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM