由于项目的发展,枚举也是越来越多,为了方便前端直接取值,而不是每一次增加枚举给说一次,就写了一个根据枚举包名+类名获取所有的枚举值的接口;具体方法如下:
一、我返回的一个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()
获取
枚举