200字范文,内容丰富有趣,生活中的好帮手!
200字范文 > java获取枚举的值_JAVA枚举Enum 通过枚举值获取枚举类型

java获取枚举的值_JAVA枚举Enum 通过枚举值获取枚举类型

时间:2019-04-01 03:28:52

相关推荐

java获取枚举的值_JAVA枚举Enum 通过枚举值获取枚举类型

枚举类:

import java.util.Optional;

public enum PurchaseDemandEnum {

YJJSL(1,"研究技术类"),

XTGCL(2,"系统工程类"),

CPSBL(3,"产品设备类"),

QJQCL(4,"器件器材类"),

JCCLL(5,"基础材料类"),

QTPTL(6,"其他配套类");

PurchaseDemandEnum(Integer code, String name) {

this.code = code;

this.name = name;

}

private Integer code;

private String name;

public Integer getCode() {

return code;

}

public void setCode(Integer code) {

this.code = code;

}

public String getName() {

return name;

}

public void setName(String name) {

this.name = name;

}

public static PurchaseDemandEnum getEnumByCode(Integer code){

Optional m1 = EnumUtil.getEnumObject(PurchaseDemandEnum.class, e -> e.getCode().equals(code));

return m1.isPresent() ? m1.get() : null;

}

public static Integer getCodeByName(String name){

Optional m1 = EnumUtil.getEnumObject(PurchaseDemandEnum.class, e -> e.getName().equals(name));

return m1.isPresent() ? m1.get().getCode() : null;

}

public static String getNameByCode(Integer code){

Optional m1 = EnumUtil.getEnumObject(PurchaseDemandEnum.class, e -> e.getCode().equals(code));

return m1.isPresent() ? m1.get().getName() : null;

}

}

EnumUtil工具类:

import java.util.Arrays;

import java.util.Map;

import java.util.Optional;

import java.util.concurrent.ConcurrentHashMap;

import java.util.function.Predicate;

public class EnumUtil {

private static Map map = new ConcurrentHashMap<>();

/**

* 根据条件获取枚举对象

*

* @param className 枚举类

* @param predicate 筛选条件

* @param

* @return

*/

public static Optional getEnumObject(Class className, Predicate 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();

}

}

测试:

public class Test2 {

public static void main(String[] args) {

String name = "系统工程类";

Integer code = 3;

Integer codeByName = PurchaseDemandEnum.getCodeByName(name);

System.out.println(codeByName);

String nameByCode = PurchaseDemandEnum.getNameByCode(code);

System.out.println(nameByCode);

PurchaseDemandEnum enumByCode = PurchaseDemandEnum.getEnumByCode(code);

System.out.println(enumByCode);

}

}

输出结果:

来源:oschina

链接:/u/4539930/blog/4473897

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。