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();
}
}