Acquiring a corresponding enumeration object by enumerating members

Method 1: a method of adding the enumerated classes, the objects through all enumeration class judgment, getOrderStatusEnum added as follows:

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;
    }
}
复制代码

Method two: obtaining enumeration object Generics, avoiding duplicate code.

(1) CodeEnum Interface

public interface CodeEnum {
    Integer getCode();
}
复制代码

getCode Method (2) of the enumeration class implements interfaces CodeEnum

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) obtain written tools to achieve enumeration object of all the enumeration class CodeEnum interface

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;
    }
}
复制代码

Reproduced in: https: //juejin.im/post/5cff0e32f265da1ba25254da

Guess you like

Origin blog.csdn.net/weixin_34261739/article/details/91416713