JAVA系列之(3) - 通过枚举成员获取对应的枚举对象

方法一:
通过在枚举类中添加方法,遍历枚举类的所有对象进行判断,如下添加getOrderStatusEnum方法:

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接口

public interface CodeEnum {
     
    Integer getCode();
}

2、枚举类实现接口CodeEnum的getCode方法

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接口的所有枚举类的枚举对象

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

转载于:https://juejin.im/post/5cff0e32f265da1ba25254da

你可能感兴趣的:(JAVA开发技术,java)