首页

基于hutool工具包的EnumUtil枚举工具类获取枚举映射关系及匹配处理

标签:hutool-all,EnumUtil,枚举工具类     发布时间:2022-07-28   

一、前言

参考hutoolhutool-all包的cn.hutool.core.util.EnumUtil枚举工具类,获取枚举映射关系进行匹配转换等处理。

二、代码说明

package cn.hutool.core.util;import cn.hutool.core.lang.Assert;import cn.hutool.core.map.MapUtil;import java.lang.reflect.Field;import java.util.ArrayList;import java.util.LinkedHashMap;import java.util.List;import java.util.Map;public class EnumUtil {    public EnumUtil() {    }    public static boolean isEnum(Class<?> clazz) {        Assert.notNull(clazz);        return clazz.isEnum();    }    public static boolean isEnum(Object obj) {        Assert.notNull(obj);        return obj.getClass().isEnum();    }    public static String toString(Enum<?> e) {        return null != e ? e.name() : null;    }    public static <T extends Enum<T>> T fromString(Class<T> enumClass, String value) {        return Enum.valueOf(enumClass, value);    }    public static <T extends Enum<T>> T likeValueOf(Class<T> enumClass, Object value) {        if (value instanceof CharSequence) {            value = value.toString().trim();        }        Field[] fields = ReflectUtil.getFields(enumClass);        Enum<?>[] enums = (Enum[])enumClass.getEnumConstants();        Field[] arr$ = fields;        int len$ = fields.length;        for(int i$ = 0; i$ < len$; ++i$) {            Field field = arr$[i$];            String fieldName = field.getName();            if (!field.getType().isEnum() && !"ENUM$VALUES".equals(fieldName) && !"ordinal".equals(fieldName)) {                Enum[] arr$ = enums;                int len$ = enums.length;                for(int i$ = 0; i$ < len$; ++i$) {                    Enum<?> enumObj = arr$[i$];                    if (ObjectUtil.equal(value, ReflectUtil.getFieldValue(enumObj, field))) {                        return enumObj;                    }                }            }        }        return null;    }    public static List<String> getNames(Class<? extends Enum<?>> clazz) {        Enum<?>[] enums = (Enum[])clazz.getEnumConstants();        if (null == enums) {            return null;        } else {            List<String> list = new ArrayList(enums.length);            Enum[] arr$ = enums;            int len$ = enums.length;            for(int i$ = 0; i$ < len$; ++i$) {                Enum<?> e = arr$[i$];                list.add(e.name());            }            return list;        }    }    public static List<Object> getFieldValues(Class<? extends Enum<?>> clazz, String fieldName) {        Enum<?>[] enums = (Enum[])clazz.getEnumConstants();        if (null == enums) {            return null;        } else {            List<Object> list = new ArrayList(enums.length);            Enum[] arr$ = enums;            int len$ = enums.length;            for(int i$ = 0; i$ < len$; ++i$) {                Enum<?> e = arr$[i$];                list.add(ReflectUtil.getFieldValue(e, fieldName));            }            return list;        }    }    public static List<String> getFieldNames(Class<? extends Enum<?>> clazz) {        List<String> names = new ArrayList();        Field[] fields = ReflectUtil.getFields(clazz);        Field[] arr$ = fields;        int len$ = fields.length;        for(int i$ = 0; i$ < len$; ++i$) {            Field field = arr$[i$];            String name = field.getName();            if (!field.getType().isEnum() && !name.contains("$VALUES") && !"ordinal".equals(name) && !names.contains(name)) {                names.add(name);            }        }        return names;    }    public static <E extends Enum<E>> LinkedHashMap<String, E> getEnumMap(Class<E> enumClass) {        LinkedHashMap<String, E> map = new LinkedHashMap();        Enum[] arr$ = (Enum[])enumClass.getEnumConstants();        int len$ = arr$.length;        for(int i$ = 0; i$ < len$; ++i$) {            E e = arr$[i$];            map.put(e.name(), e);        }        return map;    }    public static Map<String, Object> getNameFieldMap(Class<? extends Enum<?>> clazz, String fieldName) {        Enum<?>[] enums = (Enum[])clazz.getEnumConstants();        if (null == enums) {            return null;        } else {            Map<String, Object> map = MapUtil.newHashMap(enums.length);            Enum[] arr$ = enums;            int len$ = enums.length;            for(int i$ = 0; i$ < len$; ++i$) {                Enum<?> e = arr$[i$];                map.put(e.name(), ReflectUtil.getFieldValue(e, fieldName));            }            return map;        }    }}
@b@
<<推荐下载>>
  • (1) 阿里巴巴Java开发手册8种不同版本
  • (2) Web前端开发视频教程
  • (3) 30+明星讲师PPT课件分享一线大厂架构实战经验
  • (4) java开发_架构篇_视频资源分享_v2208
  • (5) java开发_高级篇_视频资源分享_v2208
  • (6) java开发_进阶篇(中级)_视频资源分享_v2208
  • (7) java开发_入门篇_视频资源分享_v2208
  • (8) 微信小程序开发视频1+167源码+实战demo等下载
  • (9) easy-shopping电子商务java源码(附脚本和安装文档说明)下载
  • (10) java常用的72份知名实用的电子书下载
  • (11) java开发性能优化资料整理大全(8份电子文档+3份实战优化)下载
  • (12) 9个常用的算法设计资料和100以上视频课件内容下载
  • (13) vue开发必备常用手册16件下载
  • (14) 21种不同技术集群方案(es、flink、redis、nginx、zk、lvs、kafka、mysql、k8s等)参考资料下载
  • (15) 20种技术代码规范(js/java/dba/阿里/华为/oracle/mysql等)参考资料下载
  • (16) 微服务五套资料(0-1,架构设计,springcloud,nacos等)下载
  • (17) 架构师(28知识图谱+3套简历模板+6套架构实战文档等)完整资料整理下载
  • (18) 大数据18套实战基础知识+8套简历模板下载
  • (19) 并发编程全套(7套+阿里巴巴+亿级实战等)实战资料下载
  • (20) Kafka九套学习整理知识点全套(面试+笔记+代码api+命令+容备等)资料下载
  • (21) java全套9个不同方向类型的面试题(基础+核心+大厂+架构师+近万套题库等)下载
  • (22) JAVA开发常用API帮助文档大全(超52种以上技术资料,高手必备)下载
  • (23) springcloud超详细139件全套学习实战资料( 视频课件+源码demo+文档资料等)下载
  • 更多推荐>>
  • <<热门文章>>