评论

收藏

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

编程语言 编程语言 发布于:2021-08-16 16:50 | 阅读数:294 | 评论:0

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());
  }
  }
}
以上为个人经验,希望能给大家一个参考,也希望大家多多支持CodeAE代码之家。如有错误或未考虑完全的地方,望不吝赐教。
原文链接:https://blog.csdn.net/u013165110/article/details/98206437

关注下面的标签,发现更多相似文章