项目中常用的java枚举操作工具类

292 阅读2分钟

小知识,大挑战!本文正在参与“程序员必备小知识”创作活动。

    在数学和计算机科学理论中,一个集的枚举是列出某些有穷序列集的所有成员的程序,或者是一种特定类型对象的计数。这两种类型经常(但不总是)重叠。 [1] 是一个被命名的整型常数的集合,枚举在日常生活中很常见,例如表示星期的SUNDAY、MONDAY、TUESDAY、WEDNESDAY、THURSDAY、FRIDAY、SATURDAY就是一个枚举。

package com.sun.collierycommon.utils;
 
import com.alibaba.fastjson.JSONObject;
import com.google.common.collect.Lists;
import com.sun.collierycommon.domain.BaseEnum;
 
import java.util.HashMap;
import java.util.List;
import java.util.Map;
 
/**
 * @Description:枚举工具类
 * @Author: tarzan
 * @Date: 2019/11/22 17:31
 */
public class SmartBaseEnumUtil {
 
    /**
     * 校验int类型的参数与枚举类比较是否合法
     *
     * @param value 参数
     * @param enumClass 枚举类必须实现BaseEnum接口
     * @return boolean
     * @Author tarzan
     */
    public static boolean checkEnum(Integer value, Class<? extends BaseEnum> enumClass) {
        if (null == value) {
            return false;
        }
        BaseEnum[] enums = enumClass.getEnumConstants();
        for (BaseEnum baseEnum : enums) {
            if (baseEnum.equalsValue(value)) {
                return true;
            }
        }
        return false;
    }
 
    /**
     * 获取枚举类的说明 value : info 的形式
     *
     * @param enumClass
     * @return String
     */
    public static String getEnumDesc(Class<? extends BaseEnum> enumClass) {
        BaseEnum[] enums = enumClass.getEnumConstants();
        // value : info 的形式
        StringBuilder sb = new StringBuilder();
        for (BaseEnum baseEnum : enums) {
            sb.append(baseEnum.getValue() + ":" + baseEnum.getDesc() + ",");
        }
        return sb.toString();
    }
 
    /**
     * 获取与int Code相匹配的枚举类的info
     *
     * @param value 参数
     * @param enumClass 枚举类必须实现BaseEnum接口
     * @return String 如无匹配枚举则返回null
     */
    public static String getEnumDescByValue(Integer value, Class<? extends BaseEnum> enumClass) {
        BaseEnum[] enums = enumClass.getEnumConstants();
        for (BaseEnum baseEnum : enums) {
            if (baseEnum.equalsValue(value)) {
                return baseEnum.getDesc();
            }
        }
        return null;
    }
 
    /**
     * 根据int类型的参数与获取枚举类的实例
     *
     * @param value 参数
     * @param enumClass 枚举类必须实现BaseEnum接口
     * @return BaseEnum 无匹配值返回null
     * @Author tarzan
     */
    public static <T extends BaseEnum> T getEnumByValue(Object value, Class<T> enumClass) {
        T[] enums = enumClass.getEnumConstants();
        for (T baseEnum : enums) {
            if (baseEnum.equalsValue(value)) {
                return baseEnum;
            }
        }
        return null;
    }
 
 
 
    /**
     * @Description: 获取枚举所有DESC
     * @Author: tarzan
     * @Date: 2019/11/7 11:27
     */
    public static List<String> getAllEnumDesc(Class<? extends BaseEnum> clazz) {
        BaseEnum[] enums = clazz.getEnumConstants();
        List<String> descList = Lists.newArrayList();
        for (BaseEnum e : enums) {
            descList.add(e.getDesc());
        }
        return descList;
    }
 
    /**
     * @Description: 获取枚举所有value
     * @Author: tarzan
     * @Date: 2019/11/7 11:27
     */
    public static List<Object> getAllEnumValue(Class<? extends BaseEnum> clazz) {
        BaseEnum[] enums = clazz.getEnumConstants();
        List<Object> descList = Lists.newArrayList();
        for (BaseEnum e : enums) {
            descList.add(e.getValue());
        }
        return descList;
    }
 
    /**
     * @Description: 组合枚举map(value,desc)
     * @Author: tarzan
     * @Date: 2019/11/13 10:50
     */
    public static Map<String,String> getMap(Class<? extends BaseEnum> clazz){
        BaseEnum[] enums = clazz.getEnumConstants();
        Map<String,String> map = new HashMap<>();
        for (BaseEnum e : enums) {
            map.put(e.getValue().toString(),e.getDesc());
        }
        return map;
    }
 
    /**
     * @Description: 列表json
     * @Author: tarzan
     * @Date: 2019/11/13 10:50
     */
    public static List<JSONObject> listJsonObject(Class<? extends BaseEnum> clazz){
        BaseEnum[] enums = clazz.getEnumConstants();
        List<JSONObject> list = Lists.newArrayList();
        for (BaseEnum e : enums) {
            JSONObject json = new JSONObject();
            json.put("value",e.getValue());
            json.put("name",e.getDesc());
            list.add(json);
        }
        return list;
    }
 
 
 
}