Java反射遍历判断值是否属于枚举类Enum
首先,是一个枚举类:
public enum AuditState { TO_BE_AUDIT(0, "待审核"), AUDITED(1, "已审核"); private String message; private Integer code; AuditState(Integer code, String message) { this.message = message; this.code = code; } public String getMessage() { return message; } public void setMessage(String message) { this.message = message; } public Integer getCode() { return code; } public void setCode(Integer code) { this.code = code; } }
然后是一个EnumUtil类:
import java.lang.reflect.InvocationTargetException; import java.lang.reflect.Method; /** * @author wayleung * @description 枚举工具类 * @date 2020-06-08 */ public class EnumUtils { /** * 判断数值是否属于枚举类的值 * @param clzz 枚举类 Enum * @param code * @author wayleung * @return */ public static boolean isInclude(Class<?> clzz,Integer code) throws InvocationTargetException, IllegalAccessException, NoSuchMethodException { boolean include = false; if(clzz.isEnum()){ Object[] enumConstants = clzz.getEnumConstants(); Method getCode = clzz.getMethod("getCode"); for (Object enumConstant:enumConstants){ if (getCode.invoke(enumConstant).equals(code)) { include = true; break; } } } return include; } public static void main(String[] args) throws IllegalAccessException, NoSuchMethodException, InvocationTargetException { System.out.println(isInclude(BusinessGroupBuyEnum.AuditState.class,0)); System.out.println(isInclude(BusinessGroupBuyEnum.AuditState.class,1)); System.out.println(isInclude(BusinessGroupBuyEnum.AuditState.class,-1)); System.out.println(isInclude(BusinessGroupBuyEnum.AuditState.class,null)); } }
返回的结果是:
true
true
false
false
通过测试!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· winform 绘制太阳,地球,月球 运作规律
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)