java枚举enum,根据value值获取key键的操作

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

}

}

补充:Java遍历枚举(Enum)的Value和相对应的Index

遍历枚举:

public class ColorIndexTest {

@SuppressWarnings("resource")

public static void main(String[] args) {

// TODO Auto-generated method stub

HSSFColorPredefined[] allColor = HSSFColorPredefined.values();

for(int i = 0;i < allColor.length;i++) {

System.out.println(allColor[i].name() + " == " + allColor[i].ordinal());

}

}

}

以上为个人经验,希望能给大家一个参考,也希望大家多多支持。如有错误或未考虑完全的地方,望不吝赐教。

以上是 java枚举enum,根据value值获取key键的操作 的全部内容, 来源链接: utcz.com/z/317554.html

回到顶部