1.ZjlxEnum.java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
|
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.调用方式:
1
2
3
4
|
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
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
|
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
遍历枚举:
1
2
3
4
5
6
7
8
9
10
|
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()); } } } |
以上为个人经验,希望能给大家一个参考,也希望大家多多支持服务器之家。如有错误或未考虑完全的地方,望不吝赐教。
原文链接:https://blog.csdn.net/u013165110/article/details/98206437