1.ZjlxEnum.java
public enum ZjlxEnum implements IEnum {
SFZ("1", "居民身份证"),
XGZM("2", "香港特区护照/身份证明"),
AMZM("3", "澳门特区护照/身份证明"),
TWTXZ("4", "台湾居民来往大陆通行证"),
JWJZZ("5", "境外永久居住证"),
HZ("6", "护照"),
QT("7", "其他");
private String value;
private String label;
public String getValue() {
return this.value;
}
public String getLabel() {
return this.label;
}
}
2.调用方式:
private String getZjlx(String zjlxCn) {
Optional<ZjlxEnum> m1 = EnumUtil.getEnumObject(ZjlxEnum.class, e -> e.getLabel().equals(zjlxCn));
return m1.isPresent() ? m1.get().getValue() : null;
}
3.EnumUtil.java
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();
}
}