一哥大佬好 那个获取枚举类这个方法有没有比较通用的写法
来源:7-2 优惠券模板实体类相关列值枚举定义
绾绾爱吃肉
2019-10-30
每个枚举类都写一遍感觉冗余有点严重哇 谢谢大佬指点
写回答
2回答
-
同学你好:
枚举类能够做的工作很少,没有通用的写法。
写代码大多数时候都是复制粘贴这样的工作,没必要纠结说重复了就不好,能实现功能满足需求就是很好的代码。
欢迎来 QQ 群随时交流、讨论,也非常感谢同学的支持!
50 -
NStart2018
2021-05-09
/** * 所有枚举类实现这个接口 */ public interface CommonEnum { /** * 获取code * * @return */ Integer getCode(); /** * 获取message * * @return */ String getMessage(); }public class EnumDataInfo { private Integer code; private String msg; }/** * @Description: 枚举工具类 * @Param: * @Return: * @Author: haungkewei * @CreateDate:2018/10/27 18:53 * @Version:1.0 */ public class EnumUtil { /** * 通过code获取枚举类CommonEnum * * @param code : 枚举类code * @param enumClass : 枚举类对象 * @param <T> * @return */ public static <T extends CommonEnum> T getEnum(Integer code, Class<T> enumClass) { for (T t : enumClass.getEnumConstants()) { if (code.equals(t.getCode())) { return t; } } return null; } /** * 根据code获取枚举类的message * * @param code * @param enumClass * @param <T> * @return */ public static <T extends CommonEnum> String getMessage(Integer code, Class<T> enumClass) { T t = getEnum(code, enumClass); if (null == t) return null; return t.getMessage(); } /** * 获取枚举类所有的枚举集合map<code,message> * * @param enumClass : 枚举类对象 * @param <T> * @return */ public static <T extends CommonEnum> Map<Integer, String> getEnumMap(Class<T> enumClass) { Map<Integer, String> map = new HashMap<Integer, String>(); for (T t : enumClass.getEnumConstants()) { map.put(t.getCode(), ((CommonEnum) t).getMessage()); } return map; } /** * 获取所有枚举实例 EnumDataInfo * * @param enumClass * @param <T> * @return */ public static <T extends CommonEnum> EnumDataInfo getEnumDataInfo(Class<T> enumClass) { EnumDataInfo info = new EnumDataInfo(); for (T t : enumClass.getEnumConstants()) { info.setMsg(t.getMessage()); info.setCode(t.getCode()); } return info; } /** * 获取所有枚举实例List<CommonEnum> * * @param enumClass : 枚举类对象 * @param <T> * @return */ public static <T extends CommonEnum> List<EnumDataInfo> getEnumList(Class<T> enumClass) { List<EnumDataInfo> list = new ArrayList<>(); for (T t : enumClass.getEnumConstants()) { EnumDataInfo info = new EnumDataInfo(); info.setCode(t.getCode()); info.setMsg(t.getMessage()); list.add(info); } return list; } /** * 测试代码 * * @param args */ public static void main(String[] args) { //System.out.println(EnumUtil.getEnum(1, CommonEnum.class)); // //System.out.println(EnumUtil.getMessage(1, CommonEnum.class)); // //System.out.println(EnumUtil.getEnumMap(CommonEnum.class)); // //System.out.println(EnumUtil.getEnumList(YesOrNoEnum.class)); } }具体的某个枚举类,实现CommonEnum接口
public enum InputTypeEnum implements CommonEnum { INPUT(1, "输入框"), RADIO(2, "单选下拉"), CHECKBOX(3, "多选下拉"), DATE_YMD(4, "日期年月日"), DATA_HMS(5, "日期时分秒"); private Integer code; private String message; InputTypeEnum(Integer code, String message) { this.code = code; this.message = message; } public Integer getCode() { return this.code; } public String getMessage() { return this.message; } }00
相似问题