枚举工具类 EnumUtils.java
简介
EnumUtils工具类, 用于读取枚举中的code和value值。
使用有限制, 枚举类必须提供 getCode 和 getValue 两个方法,例如 NODEFINE("未定义", "未定义");
api
- 返回枚举类中的所有值 readEnum(Class<?> classes);
- 根据输入的code, 取出对应的 value值 getValue(Class<?> classes, Object code);
- 根据输入的value, 取出对应的 code值 getCode(Class<?> classes, Object value);
源码
import java.lang.reflect.Method;
import java.util.ArrayList;
import java.util.List;/*** @公司名称:kk51* @作者:lud —— 2020年8月25日 上午10:30:39* @说明:EnumUtils工具类, 用于读取枚举中的code和value值* @说明:【PS: 使用有限制, 枚举类必须提供 getCode 和 getValue 两个方法】*/
public class EnumUtils {/*** 方法功能说明:@1.配合枚举类,返回枚举类中的所有值* 创建时间:2020年8月25日 下午12:28:48 --lud*/public static List<EnumEntity> readEnum(Class<?> classes) throws Exception{List<EnumEntity> result = new ArrayList<EnumEntity>();if (classes.isEnum()) {EnumUtils enumUtils = new EnumUtils();EnumEntity enumEntity;Object[] objects = classes.getEnumConstants();for (Object object : objects) {Method getValue = object.getClass().getDeclaredMethod("getValue");Method getCode = object.getClass().getDeclaredMethod("getCode");enumEntity = enumUtils.new EnumEntity();enumEntity.setCode(getCode.invoke(object).toString());enumEntity.setValue(getValue.invoke(object).toString());result.add(enumEntity);}}return result;}/*** 方法功能说明:@1.配合枚举类,根据输入的code, 取出对应的 value值* 创建时间:2020年8月25日 上午9:54:04 --lud*/public static String getValue(Class<?> classes, Object code) throws Exception {if (classes.isEnum()) {if (ObjectUtils.checkEmpty(code)) {return CommonEnum.ISEMPTY.getValue();}Object[] objects = classes.getEnumConstants();for (Object object : objects) {Method getValue = object.getClass().getDeclaredMethod("getValue");Method getCode = object.getClass().getDeclaredMethod("getCode");if (getCode.invoke(object).equals(code)) {return getValue.invoke(object).toString();}}}return CommonEnum.NODEFINE.getValue();}/*** 方法功能说明:@1.配合枚举类,根据输入的value, 取出对应的 code值* 创建时间:2020年8月25日 上午9:54:04 --lud*/public static String getCode(Class<?> classes, Object value) throws Exception {if (classes.isEnum()) {if (ObjectUtils.checkEmpty(value)) {return CommonEnum.ISEMPTY.getCode();}Object[] objects = classes.getEnumConstants();for (Object object : objects) {Method getValue = object.getClass().getDeclaredMethod("getValue");Method getCode = object.getClass().getDeclaredMethod("getCode");if (getValue.invoke(object).equals(value)) {return getCode.invoke(object).toString();}}}return CommonEnum.NODEFINE.getCode();}/*** 基础枚举类* 【PS:作为自定义枚举类时的模板 】*/private enum CommonEnum {ISEMPTY("", ""), NODEFINE("未定义", "未定义");private String code;private String value;public String getValue(){ return value; }public String getCode(){ return code; }private CommonEnum(String code, String value) { this.code = code; this.value = value; }}/** 读取枚举的实体类 */public class EnumEntity {private String code;private String value;public String getCode() {return code;}public void setCode(String code) {this.code = code;}public String getValue() {return value;}public void setValue(String value) {this.value = value;}@Overridepublic String toString() {return "EnumEntity [code=" + code + ", value=" + value + "]";}}}
枚举工具类 EnumUtils.java相关推荐
- java枚举返回字符串_枚举工具类-通过给定值获取对应的枚举类
开发背景: 在开发过程中遇到需要通过给定的值来获取对应的枚举值,如下例枚举类中,需要通过传入"春"来获取SPRING. public 开始尝试通过Enum的内置方法valueOf( ...
- java枚举工具类_Java 枚举
引入编写季节类(Season),该类只有四个对象(spring,summer,autumn,winter) 概念枚举(enum)全称为 enumeration, 是 JDK 1.5 中引入的新特性. ...
- Java 枚举工具类
1.定义一个EnumItem接口,供每个枚举类实现 public interface EnumItem<V> extends Serializable {//泛型V getCode();S ...
- UrlUtils工具类,Java URL工具类,Java URL链接工具类
UrlUtils工具类,Java URL工具类,Java URL链接工具类 >>>>>>>>>>>>>>>&g ...
- [Google Guava] 2.3-强大的集合工具类:java.util.Collections中未包含的集合工具
原文链接 译文链接 译者:沈义扬,校对:丁一 尚未完成: Queues, Tables工具类 任何对JDK集合框架有经验的程序员都熟悉和喜欢java.util.Collections包含的工具方法.G ...
- Math数学工具类在java中如何使用?
Math数学工具类在java中如何使用? 一.Math数学工具类是什么? 在处理业务的时候,经常遇到一些有关数学方面的计算,特别是做测绘和监测业务时,显得出现的频率及其多, JDK提供了一个Math类 ...
- java int to hex_Java字符串转16 进制工具类Hex.java | 学步园
Java 字符串转 16 进制工具类 Hex.java 实现 16进制 0xfecd .. 和 java 字符串之间的互转换! 如果做开发,通常用户登陆密码都会 mad5(salt + pwd) 然后 ...
- SpringBoot的JSON工具类(java),用于前后端分离
简介 JSON(JavaScript Object Notation, JS对象简谱)是一种轻量级的数据交换格式.它基于 ECMAScript(European Computer Manufactur ...
- 加密工具类 - CryptoUtils.java
加密工具类,包含MD5,BASE64,SHA,CRC32的加密与解密方法. 源码如下:(点击下载 - CryptoUtils.java.commons-io-2.4.jar.commons-code ...
最新文章
- 彻底解决tensorflow:ImportError: Could not find 'cudart64_90.dll' tensorflow安装
- c语言动态申请函数,C语言用malloc函数申请二维动态数组
- django-全文检索
- index.php?s=$1,thinkphp nginx配置rewrite,地址会多出个.php
- VTK:直纹面过滤器用法实战
- C#打开文件对话框和文件夹对话框
- 使用Spring Boot和注释支持配置Spring JMS应用程序
- size_t strtok
- 1 利用Anaconda完美解决Python 2与python 3的共存问题
- DUBBO与ZOOKEEPER、SPRINGMVC整合和使用
- php qq邮箱发送邮件报错_PHP实现发送邮件(二)
- ubuntu12.04下安装NVIDIA驱动
- SqlServer和Oralce保留几位小数以及当末尾小数为0也显示
- 【智驾深谈】从滴滴Uber合并看中国智能出行“三国演义”
- 机器学习:Kmeans聚类算法总结及GPU配置加速demo
- 设置cpolar远程访问本地网页
- rxjava面试题,android教程零基础入门
- imazing显示无法连接服务器,为什么苹果手机连接不上iMazing
- WinForm,可能是Windows上手最快的图形框架了
- realmeq2可以刷鸿蒙系统吗,realmeQ2Pro有NFC功能吗?可以用realmeQ2Pro刷公交和地铁吗...