小知识,大挑战!本文正在参与“程序员必备小知识”创作活动。
在数学和计算机科学理论中,一个集的枚举是列出某些有穷序列集的所有成员的程序,或者是一种特定类型对象的计数。这两种类型经常(但不总是)重叠。 [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;
}
}