經過枚舉成員獲取對應的枚舉對象

方法一:經過在枚舉類中添加方法,遍歷枚舉類的全部對象進行判斷,以下添加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;
    }
}
複製代碼
相關文章
相關標籤/搜索