SpringBoot——校验参数是否包含在枚举属性值中
需求
在一些枚举类调用中,我们需要对一些枚举的属性值做包含关系的判断,看是否匹配。通过反射机制获取对应方法,再获取对应的枚举属性值。下面是示例实现。
代码实现
工具类
@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("validInclude()失败:错误信息:枚举{}方法执行失败!{}", methodName, e.getMessage());
}
}
//不同或异常则返回false
return false;
}
}
枚举类
public enum ColourEnum {
RED(1, "红色"),
YELLOW(2, "黄色"),
GREEN(3, "绿色");
private Integer code;
private String desc;
ColourEnmu(Integer code, String desc) {
this.code = code;
this.desc = desc;
}
public Integer getCode() {
return code;
}
public String getDesc() {
return desc;
}
}
使用方法
Integer code = 4;
Boolean includeCheckFlag = EnumOperateUtil.validInclude(ColourEnum.class, "getCode", code);
烧不死的鸟就是凤凰
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET10 - 预览版1新功能体验(一)
2020-03-08 Java—抽象类和接口的区别
2020-03-08 JVM—GC垃圾回收器总结
2020-03-08 Git—基础知识及常用命令(系列一)
2020-03-08 Java—System类和Runtime类
2020-03-08 Java-Scanner键盘输入
2020-03-08 JVM—调优参数学习
2020-03-08 JVM—类加载过程