枚举类:

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,通过枚举值获取枚举类型相关推荐

  1. java 反射修改final变量_Java中final的属性值怎么利用反射机制进行修改

    Java中final的属性值怎么利用反射机制进行修改 发布时间:2020-12-02 17:31:07 来源:亿速云 阅读:96 作者:Leah 今天就跟大家聊聊有关Java中final的属性值怎么利 ...

  2. java int 传引用吗_Java的参数传递是「值传递」还是「引用传递」?

    关于Java传参时是引用传递还是值传递,一直是一个讨论比较多的话题. 有人说Java中只有值传递,也有人说值传递和引用传递都是存在的,比较容易让人产生疑问. 关于值传递和引用传递其实需要分情况看待. ...

  3. java数据类型及表示范围_Java数据类型及对应取值范围

    在Java中,数据类型分为两大种:基本数据类型(值类型)和包装类型(引用数据类型).基本数据类型不是对象,不能调用toString().hashCode().getClass().equals()等方 ...

  4. java 操作属性值_java反射机制根据属性名获取属性值的操作

    一.考虑安全访问范围内的属性,没有权限访问到的属性不读取 /** * 根据属性名获取属性值 * * @param fieldName * @param object * @return */ priv ...

  5. java通过属性名获取属性值_java反射机制根据属性名获取属性值的操作

    java反射机制根据属性名获取属性值的操作,属性,对象,反射,访问权限,还可以 java反射机制根据属性名获取属性值的操作 易采站长站,站长之家为您整理了java反射机制根据属性名获取属性值的操作的相 ...

  6. java 文件的md5值_Java计算文件的MD5值

    import java.io.File; import java.io.FileInputStream; import java.math.BigInteger; import java.securi ...

  7. 怎么设置java的精度值_Java:如何为double值设置Precision?

    本问题已经有最佳答案,请猛点这里访问. 我最近正在处理数字,我有一种情况,我想将双精度值的精度设置为6位或4位,这取决于数据库中存储的值. 例如,如果在数据库中,精度设置为4位,则输出必须如下所示: ...

  8. java取json对象的值_java的JsonObject对象提取值方法

    实例如下所示: import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONArray; import com.alibaba. ...

  9. java中如何调用属性_java – 如何从属性文件导入值并在注释中使用它?

    我有一个实体类: Class.java @Entity public class Class { @Id @GeneratedValue private Long id; @NotNull @Rang ...

  10. java求矩阵的逆矩阵_java n*n矩阵求值及求逆矩阵

    展开全部 import java.math.*; import java.util.*; import java.text.*; public class matrix { static int ma ...

最新文章

  1. python字符编码讲解_python 字符编码讲解
  2. C/C++函数学习(6)容器分类
  3. linux arp代理配置,linux下tomcat的arp配置
  4. OJ 注意点及知识点总结
  5. linearlayout布局的属性 gravity layout_gravity layout_weight
  6. Red5流媒体服务器初探——Red5服务器的搭建
  7. 【Linux服务器架设】搭建存储服务器-NFS
  8. 廊坊金彩:店铺如何分析问题
  9. emacs下使用google-cpplint
  10. 写一个函数,实现 n 的阶乘
  11. php 会议室源码,PHP和jQuery实现会议排座管理.doc
  12. 计算机视觉研究新方向:自监督表示学习总结(建议收藏)
  13. css3中的属性选择器以及新增伪类
  14. 解决加速c/c++编译运行速度的问题办法
  15. Android高级控件之ListView的优化以及下拉刷新页面
  16. 操作系统发展历程 (Unix、Linux、windows)
  17. idea出现 淇℃伅 乱码
  18. Shit Happens
  19. 文件共享总结中篇-Linux服务器文件共享
  20. ANSYS_Designer仿真串扰

热门文章

  1. python实现之初等函数一
  2. 二叉树的深度优先搜索
  3. 号码归属地查询---------------
  4. 也玩MF,雅典娜4 SPI 接口驱动Nokia 5110 LCD
  5. mysql 事务,锁,与四大隔离级别
  6. css: px转rem换算方法
  7. 前端怎么把px单位换成rem单位解决项目页面适配问题
  8. 遭遇职场冷暴力能怎么办?
  9. 初识 My Batis一 什么是My Batis,JDBC缺点,My Batis简化,Mapper 代理开发,My Batis 核心配置文件
  10. Springboot 使用装饰器模式,快看,它装起来了