关于枚举类型检索的体面方法
如果统一的处理枚举类型的检索功能呢?
平常时, Java开发枚举类型的使用在项目中是很频繁的()
要让几十上百个枚举类型体面优雅的根据任意的属性值去查询返回想要的值, 下面有一种方法适用于jdk 1.8以上.
新建接口去实现枚举类型的查询
- 接口 IEnum.java
import cn.hutool.core.util.EnumUtil;
import cn.hutool.core.util.ObjectUtil;
import cn.hutool.core.util.ReflectUtil;
import cn.hutool.core.util.StrUtil;
import java.lang.reflect.Field;
import java.util.List;
public interface IEnum {
//获取枚举类型值数组
default IEnum[] getValues() {
return this.getClass().getEnumConstants();
}
/**
* 查找(这个没啥用, 只是为了优雅, 枚举类型自带 valueOf)
* @author HDdara
* @param value 枚举类型的name
* @return 枚举类型查询结果
*/
default <T extends IEnum> T find(String value) {
if(this instanceof Enum) {
List<String> nameList = EnumUtil.getNames((Class<? extends Enum<?>>) this.getClass());
for (int i = 0; i < nameList.size(); ++i) {
if(ObjectUtil.equals(nameList.get(i), value)) {
return (T) this.getValues()[i];
}
}
}
return null;
}
/**
* 查找(优雅的查询)
* @author HDdara
* @param column 枚举类型的属性getter
* @