枚举类:
import java.util.Optional;
public enum PurchaseDemandEnum {
YJJSL(1,"研究技术类"),
XTGCL(2,"系统工程类"),
CPSBL(3,"产品设备类"),
QJQCL(4,"器件器材类"),
JCCLL(5,"基础材料类"),
QTPTL(6,"其他配套类");
PurchaseDemandEnum(Integer code, String name) {
this.code = code;
this.name = name;
}
private Integer code;
private String name;
public Integer getCode() {
return code;
}
public void setCode(Integer code) {
this.code = code;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public static PurchaseDemandEnum getEnumByCode(Integer code){
Optional<PurchaseDemandEnum> m1 = EnumUtil.getEnumObject(PurchaseDemandEnum.class, e -> e.getCode().equals(code));
return m1.isPresent() ? m1.get() : null;
}
public static Integer getCodeByName(String name){
Optional<PurchaseDemandEnum> m1 = EnumUtil.getEnumObject(PurchaseDemandEnum.class, e -> e.getName().equals(name));
return m1.isPresent() ? m1.get().getCode() : null;
}
public static String getNameByCode(Integer code){
Optional<PurchaseDemandEnum> m1 = EnumUtil.getEnumObject(PurchaseDemandEnum.class, e -> e.getCode().equals(code));
return m1.isPresent() ? m1.get().getName() : null;
}
}
EnumUtil 工具类:
import java.util.Arrays;
import java.util.Map;
import java.util.Optional;
import java.util.concurrent.ConcurrentHashMap;
import java.util.function.Predicate;
public class EnumUtil {
private static Map<Class, Object> map = new ConcurrentHashMap<>();
/**
* 根据条件获取枚举对象
*
* @param className 枚举类
* @param predicate 筛选条件
* @param <T>
* @return
*/
public static <T> Optional<T> getEnumObject(Class<T> className, Predicate<T> predicate) {
if (!className.isEnum()) {
return null;
}
Object obj = map.get(className);
T[] ts = null;
if (obj == null) {
ts = className.getEnumConstants();
map.put(className, ts);
} else {
ts = (T[]) obj;
}
return Arrays.stream(ts).filter(predicate).findAny();
}
}
测试:
public class Test2 {
public static void main(String[] args) {
String name = "系统工程类";
Integer code = 3;
Integer codeByName = PurchaseDemandEnum.getCodeByName(name);
System.out.println(codeByName);
String nameByCode = PurchaseDemandEnum.getNameByCode(code);
System.out.println(nameByCode);
PurchaseDemandEnum enumByCode = PurchaseDemandEnum.getEnumByCode(code);
System.out.println(enumByCode);
}
}
输出结果: