SpringBoot—枚举类属性值是否包含判断
关注 wx:CodingTechWork
需求
在一些校验中,需判断一个值是否包含在枚举属性值中,如下总结枚举属性值包含判断功能。
模板
@Slf4j
public class EnumOperateUtil {
/**
* 校验枚举,是否包含在枚举属性值中
*
* @param enumClass 枚举class
* @param methodName 属性值调用方法名称
* @param value 目标属性值
* @return
*/
public static boolean validInclude(Class enumClass, String methodName, String value) {
//获取枚举list
List enumList = EnumUtils.getEnumList(enumClass);
//循环处理
for (int i = 0; i < enumList.size(); i++) {
//获取枚举
Object en = enumList.get(i);
//获取枚举的class
Class<?> eClass = en.getClass();
try {
//反射获取方法
Method method = eClass.getMethod(methodName);
//调用枚举方法
Object invokeRes = method.invoke(en, null);
//获取方法调用结果,即属性值,判断
if (invokeRes.toString().equals(value)) {
//相同返回true
return true;
}
} catch (Exception e) {
//异常处理
log.error("枚举{}方法执行失败!{}", methodName, e.getMessage());
}
}
//不同或异常则返回false
return false;
}
}
示例
枚举
public enum DemoEnum {
RED("1", "红色"),
GREEN("2", "绿色"),
YELLOW("3", "黄色");
/**
* 编码
*/
private String code;
/**
* 名称
*/
private String name;
DemoEnum(String name, String code) {
this.name = name;
this.code = code;
}
/**
* getName
*
* @return
*/
public String getName() {
return name;
}
/**
* getCode
*
* @return
*/
public String getCode() {
return code;
}
}
使用
String colourCode = "2";
Boolean includeOperateType = EnumOperateUtil.validInclude(DemoEnum.class, "getCode", colourCode);
烧不死的鸟就是凤凰