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
链接:https://my.oschina.net/u/4539930/blog/4473897
java获取枚举的值_JAVA枚举Enum,通过枚举值获取枚举类型相关推荐
- java 反射修改final变量_Java中final的属性值怎么利用反射机制进行修改
Java中final的属性值怎么利用反射机制进行修改 发布时间:2020-12-02 17:31:07 来源:亿速云 阅读:96 作者:Leah 今天就跟大家聊聊有关Java中final的属性值怎么利 ...
- java int 传引用吗_Java的参数传递是「值传递」还是「引用传递」?
关于Java传参时是引用传递还是值传递,一直是一个讨论比较多的话题. 有人说Java中只有值传递,也有人说值传递和引用传递都是存在的,比较容易让人产生疑问. 关于值传递和引用传递其实需要分情况看待. ...
- java数据类型及表示范围_Java数据类型及对应取值范围
在Java中,数据类型分为两大种:基本数据类型(值类型)和包装类型(引用数据类型).基本数据类型不是对象,不能调用toString().hashCode().getClass().equals()等方 ...
- java 操作属性值_java反射机制根据属性名获取属性值的操作
一.考虑安全访问范围内的属性,没有权限访问到的属性不读取 /** * 根据属性名获取属性值 * * @param fieldName * @param object * @return */ priv ...
- java通过属性名获取属性值_java反射机制根据属性名获取属性值的操作
java反射机制根据属性名获取属性值的操作,属性,对象,反射,访问权限,还可以 java反射机制根据属性名获取属性值的操作 易采站长站,站长之家为您整理了java反射机制根据属性名获取属性值的操作的相 ...
- java 文件的md5值_Java计算文件的MD5值
import java.io.File; import java.io.FileInputStream; import java.math.BigInteger; import java.securi ...
- 怎么设置java的精度值_Java:如何为double值设置Precision?
本问题已经有最佳答案,请猛点这里访问. 我最近正在处理数字,我有一种情况,我想将双精度值的精度设置为6位或4位,这取决于数据库中存储的值. 例如,如果在数据库中,精度设置为4位,则输出必须如下所示: ...
- java取json对象的值_java的JsonObject对象提取值方法
实例如下所示: import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONArray; import com.alibaba. ...
- java中如何调用属性_java – 如何从属性文件导入值并在注释中使用它?
我有一个实体类: Class.java @Entity public class Class { @Id @GeneratedValue private Long id; @NotNull @Rang ...
- java求矩阵的逆矩阵_java n*n矩阵求值及求逆矩阵
展开全部 import java.math.*; import java.util.*; import java.text.*; public class matrix { static int ma ...
最新文章
- python字符编码讲解_python 字符编码讲解
- C/C++函数学习(6)容器分类
- linux arp代理配置,linux下tomcat的arp配置
- OJ 注意点及知识点总结
- linearlayout布局的属性 gravity layout_gravity layout_weight
- Red5流媒体服务器初探——Red5服务器的搭建
- 【Linux服务器架设】搭建存储服务器-NFS
- 廊坊金彩:店铺如何分析问题
- emacs下使用google-cpplint
- 写一个函数,实现 n 的阶乘
- php 会议室源码,PHP和jQuery实现会议排座管理.doc
- 计算机视觉研究新方向:自监督表示学习总结(建议收藏)
- css3中的属性选择器以及新增伪类
- 解决加速c/c++编译运行速度的问题办法
- Android高级控件之ListView的优化以及下拉刷新页面
- 操作系统发展历程 (Unix、Linux、windows)
- idea出现 淇℃伅 乱码
- Shit Happens
- 文件共享总结中篇-Linux服务器文件共享
- ANSYS_Designer仿真串扰