相关文章推荐
害羞的小熊猫  ·  cef js 交互 - OSCHINA - ...·  1 年前    · 
有情有义的帽子  ·  js ...·  1 年前    · 

由于项目的发展,枚举也是越来越多,为了方便前端直接取值,而不是每一次增加枚举给说一次,就写了一个根据枚举包名+类名获取所有的枚举值的接口;具体方法如下:

一、我返回的一个List<Map<String,Object>>的对象,传入的是枚举的包名+类名

如果确定了枚举的包名,其实也可以直接传入枚举的类名就可以了

* 根据枚举的字符串获取枚举的值 * @param className 包名+类名 * @return * @throws Exception public static List<Map<String, Object>> getAllEnumByClassName(String className) throws Exception { // 1.得到枚举类对象 Class<Enum> clz = (Class<Enum>) Class.forName(className); // 2.得到所有枚举常量 Object[] objects = clz.getEnumConstants(); Method getCode = clz.getMethod("getCode"); Method getMessage = clz.getMethod("getMessage"); List<Map<String, Object>> list = new ArrayList<Map<String, Object>>(); Map<String, Object> map = null; for (Object obj : objects) { map = new HashMap<String, Object>(); map.put("code", getCode.invoke(obj)); map.put("message", getMessage.invoke(obj)); list.add(map); return list;
二、和第一个方法基本一样,就是中途获取的常量为枚举
* 根据枚举的字符串获取枚举的值 * @param className 包名+类名 * @return * @throws Exception public static List<Map<String, Object>> getAllEnum(String className) throws Exception { // 得到枚举类对象 Class<Enum> clazz = (Class<Enum>) Class.forName(className); List<Map<String, Object>> list = new ArrayList<Map<String, Object>>(); //获取所有枚举实例 Enum[] enumConstants = clazz.getEnumConstants(); //根据方法名获取方法 Method getCode = clazz.getMethod("getCode"); Method getMessage = clazz.getMethod("getMessage"); Map<String, Object> map = null; for (Enum enum1 : enumConstants) { map = new HashMap<String, Object>(); //执行枚举方法获得枚举实例对应的值 map.put("code", getCode.invoke(enum1)); map.put("message", getMessage.invoke(enum1)); list.add(map); return list;

比如:我有一个枚举是这样子的:

在页面上通过接口,传入当前包名+类名获取得劲结果如下:

以上就是通过反射获取枚举值的方法,当然,还有别的方法,因为反射也不止这样一种

在开发的过程中我们经常会定义 枚举 类, 枚举 类中 获取 枚举 的方式也有很多种,下面我们就探究一下大家常用的几种方式: public enum TestEnum { ONE(1,"one"), ZERO(0,"zero"), TWO(2,"two"), FOUR(4,"four"), TestEnum (int id, String name) ...... 当我们需要 获取 一个Enum中所有的 时,有几种不同的方法可以实现。在本文中,介绍了一种在 Java 中高效 获取 Enum所有 的方法。使用 反射 机制和流式API,我们可以轻松地 获取 到Enum中的所有 常量 ,并对它们进行进一步的处理。在 获取 Enum所有 的过程中,我们可以使用 Java 内置的方法来实现。首先,我们需要使用 Java 反射 机制 获取 到Enum类型的所有 常量 。我们想要 获取 这个Enum中所有的 ,并打印出它们的名称和顺序。通过这种方式,我们可以高效地 获取 到Enum中所有的 ,并对它们进行进一步的处理。 //新曙光培训@西安 //www.xinshuguang.org enum xsgMeiJu{ONE,TWO,THREE}public class xsgEnum{     public static void main(String[] args){            for(xsgMeiJu s:xsgMeiJu.values()){      //valu 什么是 枚举 枚举 是JDK 1.5中引入的新特性,由一组固定的 常量 组成合法 的类型,例如一年中的季节、一周的星期数。 枚举 其实就是特殊的类,继承了 java .lang.Enum类,并实现了 java .lang.Seriablizable和 java .lang.Comparable两个接口。域成员均为 常量 ,且构造方法被默认为私有。 如何定义 枚举 先来看看 枚举 是如何定义的!我们定义四个 ,分别为春天、夏天、秋天、冬天。 public enum SeasonEnum { SPRIN. 转:https://www.itzhai.com/ java -based-notes-introduction-and-use-of-an-enumeration-type-static-import.html Java 基础笔记 - 枚举类型 的使用介绍和静态导入 1、 枚举 (Enum): JDK5.0中加入了 枚举类型 ,使用enum关键字定义,可以按照如下定义: public enum Weather{ Sunny, Rainy, Cloudy, 1.1、 枚举类型 中的两个静态方法: values() 获取 枚举