利用反射做枚举遍历工具

in 笔记 with 0 comment
/**
 * @Auther: wirechen
 * @Date: 2019/4/26 16:31
 * @Description: 请先看EnumUtil.java
 */
public interface CodeEnum {

    Integer getCode();

}
/**
 * @Auther: wirechen
 * @Date: 2019/4/26 16:41
 * @Description: 只要集成了CodeEnum的枚举类就可以用该方法查询
 */
public class EnumUtil {

    public static <T extends CodeEnum> T findByCode(Integer code, Class<T> enumClass) {
        for (T t : enumClass.getEnumConstants()) {
            if (code.equals(t.getCode())) {
                return t;
            }
        }

        throw new RuntimeException("通过code查不到");
    }

    public static <T extends CodeEnum> T findByCode(Integer code, Class<T> enumClass, Integer defaultCode) {
        if (code == null) {
            return findByCode(defaultCode, enumClass);
        }
        for (T t : enumClass.getEnumConstants()) {
            if (code.equals(t.getCode())) {
                return t;
            }
        }
        return findByCode(defaultCode, enumClass);
    }
}
int type = 1;
SaleEnum statusEnum = EnumUtil.findByCode(type, SaleEnum.class);