通过枚举成员获取对应的枚举对象

方法一:通过在枚举类中添加方法,遍历枚举类的所有对象进行判断,如下添加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

猜你喜欢

转载自blog.csdn.net/weixin_34261739/article/details/91416713