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