ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

枚举类型转为Map使用

2022-01-05 14:04:19  阅读:259  来源: 互联网

标签:Map return String 枚举 转为 public Description


背景

代码中常常需要判定值是否为枚举类型的某一个值,可以使用固定类型来转换,但是仍然希望有一个工具类,可以将传入的所有枚举类型转换为Map使用。

代码

1.枚举基类

/**
 * @ClassName: IBaseEnum
 * @Description: 相应状态码及信息--基础枚举接口
 * @author: Administrator
 * @date: 2021年4月25日 上午11:05:56
 */
public interface IBaseEnum {

	/**
	 * @Title: getCode
	 * @Description: 获取code
	 * @return
	 * @return: String
	 */
	String getCode();
	
	
	/**
	 * @Title: getMessage
	 * @Description: 获取Message
	 * @return
	 * @return: String
	 */
	String getMessage();
}

2.自定义枚举类

/**
 * @author ChenChen
 * @version 1.0.0
 * @ClassName
 * @Description 全局异常枚举信息
 * @createTime 2021年12月30日 14:11:00
 */
public enum GlobalExceptionEnum implements IBaseEnum {

    EXCEPTION_ENUM("EC_0001", "未知异常,请联系项目管理员!"),
    RUNTIME_EXCEPTION_ENUM("EC_0002", "运行期间发生异常,请联系项目管理员!"),//测试枚举工具类使用
    ;

    private String code;
    private String message;

    GlobalExceptionEnum(String code, String message) {
        this.code = code;
        this.message = message;
    }

    @Override
    public String getCode() {
        return this.code;
    }

    @Override
    public String getMessage() {
        return this.message;
    }
}

3.转换工具类

/**
 * @author ChenChen
 * @version 1.0.0
 * @ClassName EnumUtils
 * @Description 枚举工具类
 * @createTime 2021年12月30日 16:04:00
 */
public class EnumUtils {

    /**
     * @Description 将枚举转换成Map对象方便取值 - 固定类型- 仅为了提供思路 
     * @author ChenChen
     * @date 2021/12/30
     *
     * @return
     */
    public static Map<String, String> convertToMap() {
        Map<String, String> mapResult = new HashMap<>();

        Arrays.stream(GlobalExceptionEnum.values()).forEach(globalExceptionEnum -> {
            mapResult.put(globalExceptionEnum.getCode(), globalExceptionEnum.getMessage());
        });

        return mapResult;
    }

    /**
     * @Description 真正的工具类 - 将枚举转为Map使用,只要参数 clazz 继承了IbaseEnum
     * @author ChenChen
     * @date 2022/1/5
     * @param clazz
     * @return
     */
    public static Map<String, String> generateConvertToMap(Class<? extends IBaseEnum> clazz) {
        Map<String, String> mapResult = new HashMap<>();

        if(!clazz.isEnum()) {
            throw new UnsupportedOperationException("参数不合法:非枚举类,不支持转换,请检查程序是否有误!");
        }

        // 通过class.getEnumConstants();获取所有的枚举字段和值
        IBaseEnum[] iBaseEnums = clazz.getEnumConstants();
        for (IBaseEnum iBaseEnum : iBaseEnums) {
            mapResult.put(iBaseEnum.getCode(), iBaseEnum.getMessage());
        }
        return mapResult;

    }

    // 测试使用
    public static void main(String[] args) throws InstantiationException,
            IllegalAccessException, InvocationTargetException {
        Map<String, String> mapResult1 = EnumUtils.convertToMap();
        System.out.println(mapResult1);
        // 这里是真正工具调用的地方
        Map<String, String> mapResult2 = EnumUtils.generateConvertToMap(GlobalExceptionEnum.class);
        System.out.println(mapResult2);
    }
}

运行结果

{EC_0002=运行期间发生异常,请联系项目管理员!, EC_0001=未知异常,请联系项目管理员!}
{EC_0002=运行期间发生异常,请联系项目管理员!, EC_0001=未知异常,请联系项目管理员!}

标签:Map,return,String,枚举,转为,public,Description
来源: https://blog.csdn.net/cc907566076/article/details/122321982

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有