最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

java枚舉轉(zhuǎn)list通用類過程

 更新時間:2025年03月08日 09:21:29   作者:gusijin  
文章介紹了如何將Java枚舉類型轉(zhuǎn)換為List<Map<String, Object>>的通用類,該類可以實現(xiàn)枚舉到列表的轉(zhuǎn)換,并且示例了使用方法

java枚舉轉(zhuǎn)list通用類

一、目的

實現(xiàn)枚舉轉(zhuǎn)list

轉(zhuǎn)成如下:

[
        {
            "name": "PC后臺",
            "value": 1
        },
        {
            "name": "貨主端應(yīng)用",
            "value": 2
        }
    ]

二、枚舉類

public class SysRoleEnum {

    /**
     * 平臺類型
     */
    @Getter
    @AllArgsConstructor
    public enum PlatformTypeEnum implements ICommonEnum {
        pcBackground(1, "PC后臺"),
        customerSystem(2, "貨主端應(yīng)用");
        private Integer value;
        private String name;
    }
}

三、解決方案

java枚舉類轉(zhuǎn)List<Map<String, Object>>集合通用類

import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import org.springframework.util.CollectionUtils;

import java.lang.reflect.Field;
import java.lang.reflect.Method;
import java.util.*;

@Slf4j
public class EnumUtil {

    /**
     * java枚舉類轉(zhuǎn)List<Map<String, Object>>集合
     *
     * @param enumClass
     * @return null-該class不是枚舉類型  []-該枚舉類型沒有自定義字段  list-獲取該枚舉類型的List<Map>返回結(jié)果
     */
    public static List<Map<String, Object>> enumToListMap(Class<?> enumClass) {
        List<Map<String, Object>> resultList = new ArrayList<>();
        if (!"java.lang.Enum".equals(enumClass.getSuperclass().getCanonicalName())) {
            return resultList;
        }
        // 獲取所有public方法
        Method[] methods = enumClass.getMethods();
        List<Field> fieldList = new ArrayList<>();
        // step 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)));
                fieldList.add(field);
            } catch (NoSuchFieldException | SecurityException e) {
                log.error(e.getMessage(), e);
            }
        });

        // step 2:將字段作為key,逐一把枚舉值作為value 存入list
        if (CollectionUtils.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) {
                    log.error(e.getMessage(), e);
                }
            }
            // 將Map添加到集合中
            resultList.add(map);
        }

        return resultList;
    }
}

使用方法

EnumUtil.enumToListMap(SysRoleEnum.PlatformTypeEnum.class);

請求顯示

[
        {
            "name": "PC后臺",
            "value": 1
        },
        {
            "name": "貨主端應(yīng)用",
            "value": 2
        }
]

總結(jié)

以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • java實現(xiàn)攝像頭截圖功能

    java實現(xiàn)攝像頭截圖功能

    這篇文章主要為大家詳細介紹了java實現(xiàn)攝像頭截圖功能,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-10-10
  • 深入解析@InitBinder注解的功能與應(yīng)用

    深入解析@InitBinder注解的功能與應(yīng)用

    這篇文章主要介紹了深入解析@InitBinder注解的功能與應(yīng)用,從字面意思可以看出這個的作用是給Binder做初始化的,被此注解的方法可以對WebDataBinder初始化,webDataBinder是用于表單到方法的數(shù)據(jù)綁定的,需要的朋友可以參考下
    2023-10-10
  • Spring Boot 訪問安全之認證和鑒權(quán)詳解

    Spring Boot 訪問安全之認證和鑒權(quán)詳解

    這篇文章主要介紹了Spring Boot 訪問安全之認證和鑒權(quán),具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-11-11
  • Mybatis plus枚舉處理器的具體使用

    Mybatis plus枚舉處理器的具體使用

    在開發(fā)中,數(shù)據(jù)庫表中的字段很常見會使用枚舉類型來表示一些固定的取值范圍,本文主要介紹了Mybatis plus枚舉處理器的具體使用,具有一定的參考價值,感興趣的可以了解一下
    2024-03-03
  • 深入探討Java超時自動取消的實現(xiàn)方案

    深入探討Java超時自動取消的實現(xiàn)方案

    在復(fù)雜的分布式系統(tǒng)中,超時控制是保障系統(tǒng)穩(wěn)定性和可用性的關(guān)鍵機制,本文將深入探討Java中實現(xiàn)超時自動取消的多種方案,希望對大家有所幫助
    2024-11-11
  • JavaWeb禁止瀏覽器緩存當前Web頁面的方法

    JavaWeb禁止瀏覽器緩存當前Web頁面的方法

    所謂瀏覽器緩存,是指當?shù)谝淮卧L問網(wǎng)頁時,瀏覽器會將這些網(wǎng)頁緩存到本地,當下一次再訪問這些被緩存的網(wǎng)頁時,瀏覽器就會直接從本地讀取這些網(wǎng)頁的內(nèi)容,而無需再從網(wǎng)絡(luò)上獲取
    2017-11-11
  • javaWeb自定義標簽用法實例詳解

    javaWeb自定義標簽用法實例詳解

    這篇文章主要介紹了javaWeb自定義標簽用法,結(jié)合實例形式分析了javaweb自定義標簽的功能、定義方法及執(zhí)行原理,需要的朋友可以參考下
    2017-04-04
  • java制作廣告圖片自動輪播控件

    java制作廣告圖片自動輪播控件

    本文給大家分享了2款java實現(xiàn)的首頁廣告圖片自動輪播的控件,分別是PC端和移動端的,效果非常不錯,有需要的小伙伴可以參考下。
    2015-10-10
  • Springcloud-nacos實現(xiàn)配置和注冊中心的方法

    Springcloud-nacos實現(xiàn)配置和注冊中心的方法

    這篇文章主要介紹了Springcloud-nacos實現(xiàn)配置和注冊中心的方法,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-07-07
  • Spring Boot+Drools規(guī)則引擎整合詳解

    Spring Boot+Drools規(guī)則引擎整合詳解

    本篇文章主要介紹了Spring Boot+Drools規(guī)則引擎整合,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-09-09

最新評論

固始县| 汾阳市| 阜新| 河曲县| 兴海县| 油尖旺区| 襄垣县| 海南省| 独山县| 绍兴市| 张家川| 云阳县| 晋州市| 石柱| 雷山县| 焦作市| 邛崃市| 宁陵县| 民勤县| 孟连| 阳城县| 长子县| 安吉县| 咸阳市| 辽宁省| 穆棱市| 巴林左旗| 阳江市| 长泰县| 千阳县| 古丈县| 宁德市| 濉溪县| 诸暨市| 饶平县| 辰溪县| 永州市| 上林县| 龙陵县| 雅江县| 鱼台县|