简介
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;
/**
* @公司名称:kk51
* @作者:lud —— 2020年8月25日 上午10:30:39
* @说明:EnumUtils工具类, 用于读取枚举中的code和value值
* @说明:【PS: 使用有限制, 枚举类必须提供 getCode 和 getValue 两个方法】
*/
public class EnumUtils {
/**
* 方法功能说明:@1.配合枚举类,返回枚举类中的所有值
* 创建时间:2020年8月25日 下午12:28:48 --lud
*/
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值
* 创建时间:2020年8月25日 上午9:54:04 --lud
*/
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值
* 创建时间:2020年8月25日 上午9:54:04 --lud
*/
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 + "]";
}
}
}