我是靠谱客的博主 明理草丛,这篇文章主要介绍Java枚举类工具类,现在分享给大家,希望可以做个参考。

文章目录

      • 场景
      • Util
      • Controller
      • 返回结果

场景

通过工具类返回枚举值提供给前端

Util

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
package com.common.utils; import org.apache.commons.lang3.ObjectUtils; import org.apache.commons.lang3.StringUtils; import java.lang.reflect.Field; import java.lang.reflect.Method; import java.util.*; public class EnumListUtil { private static String ENUM_CLASSPATH = "java.lang.Enum"; public static List<Map<String, Object>> enumToListMap(Class<?> enumClass) { List<Map<String, Object>> resultList = new ArrayList<>(); if (!ENUM_CLASSPATH.equals(enumClass.getSuperclass().getCanonicalName())) { return resultList; } // 获取所有public方法 Method[] methods = enumClass.getMethods(); List<Field> fieldList = new ArrayList<>(); //1.通过get方法提取字段,避免get作为自定义方法的开头,建议枚举类中使用 ‘find’或其余命名 Arrays.stream(methods) .map(Method::getName) .filter( methodName -> methodName.startsWith("get") && !"getDeclaringClass".equals(methodName) && !"getClass".equals(methodName) ).forEachOrdered(methodName -> { try { Field field = enumClass.getDeclaredField(StringUtils.uncapitalize(methodName.substring(3))); if (null != field) { fieldList.add(field); } } catch (NoSuchFieldException | SecurityException e) { e.printStackTrace(); } }); //2.将字段作为key,逐一把枚举值作为value 存入list if (ObjectUtils.isEmpty(fieldList)) { return resultList; } Enum<?>[] enums = (Enum[]) enumClass.getEnumConstants(); for (Enum<?> anEnum : enums) { Map<String, Object> map = new HashMap<>(fieldList.size()); for (Field field : fieldList) { field.setAccessible(true); try { // 向map集合添加字段名称 和 字段值 map.put(field.getName(), field.get(anEnum)); } catch (IllegalArgumentException | IllegalAccessException e) { e.printStackTrace(); } } // 将Map添加到集合中 resultList.add(map); } return resultList; } }

Controller

复制代码
1
2
3
4
5
@GetMapping("/getIphoneTypeEnum") ResponseResult<?> getIphoneTypeEnum() { return ResponseResult.newSuccessResponse(EnumListUtil.enumToListMap(IphoneTypeEnum.class)); }

返回结果

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
{ "code": 0, "msg": "success", "success": true, "data": [ { "name": "小米", "type": 1 }, { "name": "苹果", "type": 2 }, { "name": "华为", "type": 3 } ] }

最后

以上就是明理草丛最近收集整理的关于Java枚举类工具类的全部内容,更多相关Java枚举类工具类内容请搜索靠谱客的其他文章。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(64)

评论列表共有 0 条评论

立即
投稿
返回
顶部