首页 > 编程语言 >Java反射遍历判断值是否属于枚举类Enum

Java反射遍历判断值是否属于枚举类Enum

时间:2024-01-10 11:34:29浏览次数:35  
标签:code Java String AuditState Enum 枚举 message public

首先,是一个枚举类:

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

通过测试!

标签:code,Java,String,AuditState,Enum,枚举,message,public
From: https://www.cnblogs.com/min225016/p/17956132

相关文章

  • java期末复习,阳光学院
    1.面向对象都有那些特性以及你对这些特性的理解?类具有封装性,继承性和多态性的特性。(1)封装性:类的封装性为类的成员提供公有,缺省,保护和私有等访问权限,目的是隐藏类只的私有变量和类中方法的实现细节(2)继承性:允许通过继承原有类的某些特性或全部特性而产生全新的类,原有的类称为基类......
  • 韩顺平java基础-12-异常
    韩顺平java基础-12-异常异常基本概念语法错误、逻辑错误不属于异常,区分语法错误、逻辑错误与异常的区别分类Error:指编译器无法处理解决的错误,可能是语法错误、逻辑错误。Exception:编译时异常、运行时异常**异常体系图**异常分为运行时异常与编译时异常运行时异常,......
  • 韩顺平java基础-09-房屋出租系统
    韩顺平java基础-09-房屋出租系统房屋出租设计HouseView.java<=>类[界面]显示界面接收用户输入调用HouseService完成对房屋信息的各种操作HouseService.java<=>类[业务层]响应HouseView的调用完成对房屋信息的各种操作[crud]House.java<=>类[数据]一个Hous......
  • 韩顺平java基础-11-枚举类与注解
    韩顺平java基础-11-枚举类与注解2024.1.5-2024.1.8枚举类定义概念定义常量对象,不能被修改语法1.自定义类实现枚举构造器私有化去掉set方法创建静态对象(new)优化:加入final修饰符,避免类加载2.enum关键字实现枚举关键字enum替换class创建对象:对象名+实参列表注......
  • 韩顺平java基础-10-面向对象编程
    韩顺平java基础-10-面向对象编程类变量和类方法类变量static静态变量被同一个类所有对象共享类变量在类加载的时候生成定义语法访问修饰符static数据类型变量名如何访问类变量类名.类变量名//类变量随着类加载而创建,所以即使没有创建对象实例也可以访问。使用细......
  • Anaconda 修改环境默认位置,以及遇到将安全信息应用到以下对象时发生错误无法枚举容器
    默认虚拟环境会在C盘,anaconda环境默认安装在用户目录C:\Users\username.conda\envs下,想换到D盘1.首先,找到用户目录下的.condarc文件2.打开.condarc文件,添加或修改.condarc中的env_dirs设置环境路径,按顺序第⼀个路径作为默认存储路径,搜索环境按先后顺序在各⽬录中查找。直接......
  • java工作流引擎-j-roadflow-plus使用快速入门
    新建一个流程并发布运行需要以下步骤:1、新建表单。    在表单管理中新建表单,并设计表单,在表单中拖入控件。        点新建按钮会进入表单设计界面,并自动弹出表单属性设置。        输入表单名称,选择数据连接,数据表选择已有的测试表rf_form_test,主键选id......
  • 唠一唠Java线程池
    第1章:引言大家好,我是小黑,咱们今天来聊聊Java线程池,如果没有线程池,每个线程都需要手动创建和销毁线程,那将是多么低效和耗资源啊!线程池的核心作用就是复用已创建的线程,减少系统开销,提高响应速度。咱们在开发高并发应用时,经常会遇到需要同时执行多个任务的场景,这时候线程池就闪亮......
  • test-01-java 单元测试框架 junit 入门介绍
    拓展阅读junit5系列基于junit5实现junitperf源码分析Autogeneratemockdataforjavatest.(便于Java测试自动生成对象信息)Junitperformancerelyonjunit5andjdk8+.(java性能测试框架。性能测试。压测。测试报告生成。)JUnitJUnit是一个用于编写可重复测试......
  • test-02-java 单元测试框架 junit5 入门介绍
    拓展阅读junit5系列基于junit5实现junitperf源码分析Autogeneratemockdataforjavatest.(便于Java测试自动生成对象信息)Junitperformancerelyonjunit5andjdk8+.(java性能测试框架。性能测试。压测。测试报告生成。)junit5的入门例子maven引入<depend......