方法一:經過在枚舉類中添加方法,遍歷枚舉類的全部對象進行判斷,以下添加getOrderStatusEnum方法:bash
import lombok.Getter;
/**
* @author: lichujun
* @date: 2018-08-15
*/
@Getter
public enum OrderStatusEnum {
New(0, "新訂單"),
FINISHED(1, "完結"),
CANCEL(2, "已取消"),
;
private Integer code;
private String message;
OrderStatusEnum(Integer code, String message) {
this.code = code;
this.message = message;
}
public static OrderStatusEnum getOrderStatusEnum(Integer code) {
for (OrderStatusEnum orderStatusEnum: OrderStatusEnum.values()) {
if (orderStatusEnum.code.equals(code)) {
return orderStatusEnum;
}
}
return null;
}
}
複製代碼
方法二:經過泛型獲取枚舉對象,避免重複代碼。工具
(1)CodeEnum接口ui
public interface CodeEnum {
Integer getCode();
}
複製代碼
(2)枚舉類實現接口CodeEnum的getCode方法this
import lombok.Getter;
/**
* @author: lichujun
* @date: 2018-08-15
*/
@Getter
public enum OrderStatusEnum implements CodeEnum {
New(0, "新訂單"),
FINISHED(1, "完結"),
CANCEL(2, "已取消"),
;
private Integer code;
private String message;
OrderStatusEnum(Integer code, String message) {
this.code = code;
this.message = message;
}
}
複製代碼
(3)編寫工具類獲取實現了CodeEnum接口的全部枚舉類的枚舉對象spa
public class EnumUtil {
public static <T extends CodeEnum> T getByCode(Integer code, Class<T> enumClass) {
for (T each: enumClass.getEnumConstants()) {
if (code.equals(each.getCode())) {
return each;
}
}
return null;
}
}
複製代碼