自定义枚举工具类 EnumUtils.java
简介
- EnumUtils工具类, 用于读取枚举中的code和value值。
- 使用有限制, 枚举类必须提供 getCode 和 getValue 两个方法,例如 NODEFINE(“未定义”, “未定义”);
api
- 返回枚举类中的所有值 readEnum(Class<?> classes);
- 根据输入的code, 取出对应的 value值 getValue(Class<?> classes, Object code);
- 根据输入的value, 取出对应的 code值 getCode(Class<?> classes, Object value);
源码
-
import java.lang.reflect.Method; import java.util.ArrayList; import java.util.List; /** * @说明:EnumUtils工具类, 用于读取枚举中的code和value值 * @说明:【PS: 使用有限制, 枚举类必须提供 getCode 和 getValue 两个方法】 */ public class EnumUtils { /** * 方法功能说明:@1.配合枚举类,返回枚举类中的所有值 */ public static List<EnumEntity> readEnum(Class<?> classes) throws Exception{ List<EnumEntity> result = new ArrayList<EnumEntity>(); if (classes.isEnum()) { EnumUtils enumUtils = new EnumUtils(); EnumEntity enumEntity; Object[] objects = classes.getEnumConstants(); for (Object object : objects) { Method getValue = object.getClass().getDeclaredMethod("getValue"); Method getCode = object.getClass().getDeclaredMethod("getCode"); enumEntity = enumUtils.new EnumEntity(); enumEntity.setCode(getCode.invoke(object).toString()); enumEntity.setValue(getValue.invoke(object).toString()); result.add(enumEntity); } } return result; } /** * 方法功能说明:@1.配合枚举类,根据输入的code, 取出对应的 value值 */ public static String getValue(Class<?> classes, Object code) throws Exception { if (classes.isEnum()) { if (ObjectUtils.checkEmpty(code)) { return CommonEnum.ISEMPTY.getValue(); } Object[] objects = classes.getEnumConstants(); for (Object object : objects) { Method getValue = object.getClass().getDeclaredMethod("getValue"); Method getCode = object.getClass().getDeclaredMethod("getCode"); if (getCode.invoke(object).equals(code)) { return getValue.invoke(object).toString(); } } } return CommonEnum.NODEFINE.getValue(); } /** * 方法功能说明:@1.配合枚举类,根据输入的value, 取出对应的 code值 */ public static String getCode(Class<?> classes, Object value) throws Exception { if (classes.isEnum()) { if (ObjectUtils.checkEmpty(value)) { return CommonEnum.ISEMPTY.getCode(); } Object[] objects = classes.getEnumConstants(); for (Object object : objects) { Method getValue = object.getClass().getDeclaredMethod("getValue"); Method getCode = object.getClass().getDeclaredMethod("getCode"); if (getValue.invoke(object).equals(value)) { return getCode.invoke(object).toString(); } } } return CommonEnum.NODEFINE.getCode(); } /** * 基础枚举类 * 【PS:作为自定义枚举类时的模板 】 */ private enum CommonEnum { ISEMPTY("", ""), NODEFINE("未定义", "未定义"); private String code; private String value; public String getValue(){ return value; } public String getCode(){ return code; } private CommonEnum(String code, String value) { this.code = code; this.value = value; } } /** 读取枚举的实体类 */ public class EnumEntity { private String code; private String value; public String getCode() { return code; } public void setCode(String code) { this.code = code; } public String getValue() { return value; } public void setValue(String value) { this.value = value; } @Override public String toString() { return "EnumEntity [code=" + code + ", value=" + value + "]"; } } }