精华内容
下载资源
问答
  • JAVA反射获取所有枚举定义枚举接口枚举类获取所有枚举输出 定义枚举接口 public interface BaseEnum { /** * 获取枚举值 * @returnint */ Integer getValue(); /** * 获取枚举名称 * @return */ String ...

    定义枚举接口

    public interface BaseEnum {
        /**
         * 获取枚举值
         * @returnint
         */
        Integer getValue();
    
        /**
         * 获取枚举名称
         * @return
         */
        String getName();
    }
    

    枚举类

    @Getter
    public enum TestEnum implements BaseEnum {
        TEST1("name1",1),
        TEST2("name1",2),
        TEST3("name1",3);
    
        private String name;
        private Integer value;
    
        private TestEnum(String name,Integer value){
            this.name = name;
            this.value = value;
        }
    
    }
    

    获取所有枚举

        public static void test4(){
    
            Reflections reflections = new Reflections("com.xxx.modules");
    
            Set<Class<? extends BaseEnum>> monitorClasses = reflections.getSubTypesOf(BaseEnum.class);
    
            System.out.println("size:"+monitorClasses.size());
            monitorClasses.forEach(m->{
                try {
                    System.out.println("name:"+m.getSimpleName());
                    BaseEnum[] enumConstants = m.getEnumConstants();
    
                    for (BaseEnum anEnum : enumConstants) {
                        System.out.println("enumName:"+anEnum+"  value:"+anEnum.getValue()+"  name:"+anEnum.getName());
                    }
    
                } catch (Exception e) {
                    e.printStackTrace();
                }
            });
        }
    

    输出

    执行输出结果

    展开全文
  • * 获取枚举值 * @returnint */ Integer getValue(); /** * 获取枚举名称 * @return */ String getName(); } 枚举类 @Getter public enum TestEnum implements BaseEnum { TEST1("name1",1

    定义枚举接口

    public interface BaseEnum {
        /**
         * 获取枚举值
         * @returnint
         */
        Integer getValue();
    
        /**
         * 获取枚举名称
         * @return
         */
        String getName();
    }
    

    枚举类

    @Getter
    public enum TestEnum implements BaseEnum {
        TEST1("name1",1),
        TEST2("name1",2),
        TEST3("name1",3);
    
        private String name;
        private Integer value;
    
        private TestEnum(String name,Integer value){
            this.name = name;
            this.value = value;
        }
    
    }
    

    获取所有枚举

        public static void test4(){
    
            Reflections reflections = new Reflections("com.xxx.modules");
    
            Set<Class<? extends BaseEnum>> monitorClasses = reflections.getSubTypesOf(BaseEnum.class);
    
            System.out.println("size:"+monitorClasses.size());
            monitorClasses.forEach(m->{
                try {
                    System.out.println("name:"+m.getSimpleName());
                    BaseEnum[] enumConstants = m.getEnumConstants();
    
                    for (BaseEnum anEnum : enumConstants) {
                        System.out.println("enumName:"+anEnum+"  value:"+anEnum.getValue()+"  name:"+anEnum.getName());
                    }
    
                } catch (Exception e) {
                    e.printStackTrace();
                }
            });
        }
    

    输出

    执行输出结果

    展开全文
  • java中常用的枚举方法有values和valueofvalueOf方法会把一个String类型的...values是获取所有枚举项package HtppClient1.EnumUtil;import java.lang.reflect.Field;import java.lang.reflect.InvocationTargetEx...

    java中常用的枚举方法有values和valueof

    valueOf方法会把一个String类型的名称转变成枚举项,也就是在枚举项中查找字面值和该参数相等的枚举项。

    values是获取所有的枚举项

    package HtppClient1.EnumUtil;

    import java.lang.reflect.Field;

    import java.lang.reflect.InvocationTargetException;

    import java.lang.reflect.Method;

    import java.util.ArrayList;

    import java.util.List;

    import org.springframework.util.ReflectionUtils;

    import com.sun.org.apache.bcel.internal.generic.IfInstruction;

    enum TestEnums {

    weirenzheng(0, "0、未认证;", 16, -1, 0),

    onceTime(1, "上月支付1次及以下;", 8, 0, 1),

    towTimes(2, "上月支付1-2次", 12, 1, 2),

    threeTimes(3, "上月支付3-4次;", 16, 3, 4),

    fiveTimes(4, "上月支付5-7次", 20, 4, 7),

    sixTimes(5, "上月支付7次以上", 24, 7, Integer.MAX_VALUE);

    public int code;//排序

    public String desc;//描述

    public int score;//分值

    public int lower;//最低次数

    public int high;//最高次数

    TestEnums() {

    }

    TestEnums(int code, String desc, int score, int lower, int high) {

    this.code = code;

    this.desc = desc;

    this.score = score;

    this.lower = lower;

    this.high = high;

    }

    public int getCode() {

    return code;

    }

    public String getDesc() {

    return desc;

    }

    public int getScore() {

    return score;

    }

    public int getLower() {

    return lower;

    }

    public int getHigh() {

    return high;

    }

    /**

    * 根据code返回枚举值

    * @param Code

    * @return

    */

    public static TestEnums getEumByCode(int Code){

    for(TestEnums testEnums: TestEnums.values()) {

    if(testEnums.getCode()==Code) {

    return testEnums;

    }

    }

    return null;

    }

    /**

    * 根据序号获取枚举数组中的值,序号必须从0开始

    * @param key

    * @return

    * @throws IllegalAccessException

    * @throws IllegalArgumentException

    * @throws InvocationTargetException

    * @throws InstantiationException

    */

    public static ListgetEumByKey(int Code) throws IllegalAccessException, IllegalArgumentException, InvocationTargetException, InstantiationException {

    ListenumList=getEumValueList();

    ListenumList1=new ArrayList();

    for(TestEnums testEnums: TestEnums.values()) {

    if(testEnums.getCode()==Code) {

    Class> clazz=testEnums.getClass();

    // 获取所有常量

    Object object = clazz.getEnumConstants()[Code];

    Field[] filedFields=clazz.getFields();

    for (Field field : filedFields) {

    field.setAccessible(true);

    Object sssObject=field.get(object);

    if(enumList.contains(field.getName())) {

    continue;

    }else {

    if(sssObject!=null)

    enumList1.add((T) sssObject);

    }

    }

    return enumList1;

    }

    }

    return null;

    }

    /**

    * 获取枚举值常量列表

    * @param Code

    * @return

    */

    public static ListgetEumValueList() {

    Listlist=new ArrayList();

    for(Object object:TestEnums.values()) {

    list.add(object.toString());

    }

    return list;

    }

    /**

    * 传入方法名称 values是值 ,field是 字段mingcheng

    * @param * @param enumType

    * @param value

    * @param field

    * @return

    * @throws Exception

    */

    public static > T getEnumOnValue(ClassenumType, String value, String field) throws Exception {

    for (Object obj : enumType.getEnumConstants()) {

    Method m = obj.getClass().getDeclaredMethod("values", null);

    Object[] results = (Object[]) m.invoke(obj, null);

    for (Object result : results) {

    Field codeField = result.getClass().getDeclaredField(field);

    ReflectionUtils.makeAccessible(codeField);

    String fileValue = String.valueOf(ReflectionUtils.getField(codeField, result));

    if (fileValue.equals(value)) {

    return (T) result;

    }

    }

    }

    return null;

    }

    }

    test代码:

    import java.util.List;

    /**

    * Hello world!

    *

    */

    public class App

    {

    public static void main( String[] args ) throws Exception

    {

    TestEnums testEnums = TestEnums.getEnumOnValue(TestEnums.class, "1", "code");

    Listlist=TestEnums.getEumByKey(1);

    for (Object string : list) {

    System.out.println(":"+string);

    }

    }

    }

    展开全文
  • java反射获取枚举所有的值

    万次阅读 2019-05-09 15:16:40
    由于项目的发展,枚举也是越来越多,为了方便前端直接取值,而不是每一次增加枚举给说一次,就写了一个根据枚举包名+类名获取所有枚举值的接口;具体方法如下: 一、我返回的一个List<Map<String,Object>...

    由于项目的发展,枚举也是越来越多,为了方便前端直接取值,而不是每一次增加枚举给说一次,就写了一个根据枚举包名+类名获取所有的枚举值的接口;具体方法如下:

    一、我返回的一个List<Map<String,Object>>的对象,传入的是枚举的包名+类名

       如果确定了枚举的包名,其实也可以直接传入枚举的类名就可以了

    /**
         * 根据枚举的字符串获取枚举的值
         *
         * @param className 包名+类名
         * @return
         * @throws Exception
         */
        public static List<Map<String, Object>> getAllEnumByClassName(String className) throws Exception {
            // 1.得到枚举类对象
            Class<Enum> clz = (Class<Enum>) Class.forName(className);
            // 2.得到所有枚举常量
            Object[] objects = clz.getEnumConstants();
            Method getCode = clz.getMethod("getCode");
            Method getMessage = clz.getMethod("getMessage");
            List<Map<String, Object>> list = new ArrayList<Map<String, Object>>();
            Map<String, Object> map = null;
            for (Object obj : objects) {
                map = new HashMap<String, Object>();
                map.put("code", getCode.invoke(obj));
                map.put("message", getMessage.invoke(obj));
                list.add(map);
            }
            return list;
        }
    二、和第一个方法基本一样,就是中途获取的常量为枚举
    /**
     * 根据枚举的字符串获取枚举的值
     *
     * @param className 包名+类名
     * @return
     * @throws Exception
     */
    public static List<Map<String, Object>> getAllEnum(String className) throws Exception {
        // 得到枚举类对象
        Class<Enum> clazz = (Class<Enum>) Class.forName(className);
        List<Map<String, Object>> list = new ArrayList<Map<String, Object>>();
        //获取所有枚举实例
        Enum[] enumConstants = clazz.getEnumConstants();
        //根据方法名获取方法
        Method getCode = clazz.getMethod("getCode");
        Method getMessage = clazz.getMethod("getMessage");
        Map<String, Object> map = null;
        for (Enum enum1 : enumConstants) {
            map = new HashMap<String, Object>();
            //执行枚举方法获得枚举实例对应的值
            map.put("code", getCode.invoke(enum1));
            map.put("message", getMessage.invoke(enum1));
            list.add(map);
        }
        return list;
    }                                                                                                         
    

    比如:我有一个枚举是这样子的:

    在页面上通过接口,传入当前包名+类名获取得劲结果如下:

    以上就是通过反射获取枚举值的方法,当然,还有别的方法,因为反射也不止这样一种

    展开全文
  • java中常用的枚举方法有values和valueof valueOf方法会把一个String类型的名称...values是获取所有枚举项 package HtppClient1.EnumUtil; import java.lang.reflect.Field; import java.lang.reflect.Invoc...
  • :通过取项目某个包路径下的所有枚举类来获取该类的所有属性直接上java代码:package com.xxx.common.ennum;import cn.hutool.core.util.ClassUtil;import java.lang.reflect.Method;import java.util.ArrayList;...
  • :通过取项目某个包路径下的所有枚举类来获取该类的所有属性 直接上java代码: package com.xxx.common.ennum; import cn.hutool.core.util.ClassUtil; import java.lang.reflect.Method; import java.util....
  • java反射获取枚举

    万次阅读 2018-05-06 19:35:39
    所以如果要获取枚举常量中的值,首先需要使用class的getEnumConstants()方法获取枚举类中所有枚举常量,然后使用类中对应的方法,得到常量中包含字段的值。代码如下:1.枚举类代码示例package ...
  • 需要填写第二个节点的三个办理人员数据,三个办理人员的角色是固定的枚举类中的枚举值,这样第一个节点审批提交时,我们就需要创建三个不同角色的办理对象,创建对象时只需要获取枚举中的所有枚举,然后循环创建多个...
  • 两个方法都可以将一个未知的枚举所有成量读取出来 如果系统中有好几个ORM实体使用枚举作为成员变量,在页面中又需要将这些枚举表现为select标签,就可以使用这个方法了。 public <E extends Enum<E>&...
  • 枚举,是一个集合。当一个变量具有固定取值时,我们就将它定义为枚举类型。例如四季有春夏秋冬,性别有男女。1声明1. 关键字:enum声明枚举时必须使用 enum 关键字/*** 季节枚举*/publicenumSeasonEnum {SPRING,...
  • JAVA枚举相对来说比.NET的枚举功能强大,感觉就像是一种简化版的类对象,可以有构造方法,可以重载,可以继承接口等等,但不能继承类,JAVA枚举在实际开发中应用相当频繁,以下几个封装方法在实际开发中可能用到,...
  • 我经常有类似的用例,我通过将键(不是本地化的值)作为...所有本地化字符串都可以存储在一个.properties文件中,这样可以消除Java类中的所有编码问题;>它使代码完全可本地化(事实上,它将是每个语言环境一个.propert...
  • 在项目实际开发过程中,经常会遇到对某些固定的值、字典项的定义的需求,很多项目经常使用常量来定义,其实在jdk1.5就已经引入了枚举,使用枚举可以...枚举类不允许使用 extends 关键字 枚举类默认会继承java.lang...
  • 可以采用如下设计方式通过private将构造器隐藏起来把这个类的所有可能实例都使用public static final 修饰的类变量来保存如果与必要,可以提供一些静态方法,允许其他程序根据特定参数来获取与之匹配的实例使用枚举...
  • 我们知道在JAVA编写一个枚举类之后,在调用时系统就会自动给它生成一个values()的数组,通过这个数组就可按索引获取枚举值 但是如果我们声明的是一个枚举的范型类呢?我们知道所有JAVA枚举类,其实都是继承Enum类...
  • Java——enum枚举用法

    2019-02-09 00:12:19
    2、获取所有枚举对象 3、枚举中添加自定义属性、自定义构造函数和抽象方法 4、枚举与接口 5、switch中使用枚举 三、枚举其他用法 1、EnumSet 2、EnumMap 3、枚举与单例模式 一、枚举 1、常量的定义 常量...
  • Java基础入门要学哪些?怎么掌握反射和枚举?... 反射 反射就是动态加载一个指定的类,并获取该类中的所有的内容。反射可以将字节码文件封装成对象,并将字节码文件中的内容都封装成对象,这样...
  • java-枚举

    2018-06-04 15:00:00
    1.枚举的常用方法 enum.values() 获取所有枚举值 enum.ordinal() 获取枚举的序号值 2.枚举不能被继承,但可以通过接口扩充功能 所有的enum都继承自java...
  • Java枚举

    2020-09-25 22:27:11
    所有的自定义枚举类都隐式的继承自 java.lang.Enum 类 注:在声明枚举类时,若没有声明枚举的基本类型,默认情况下它的基础类型为 int 枚举的常用方法: 方法名 作用 ordinal 获取成员变量的索引位置 ...
  • 本文实例讲述了Java手动方式创建枚举类。分享给大家供大家参考,具体如下:一 点睛可以采用如下设计方式手动创建枚举类通过private将构造器隐藏起来。把这个类的所有可能实例都使用public static final属性来保存。...
  • 枚举枚举类: 定义一种事物的所有可能|情况定义enum定义枚举,不再使用class枚举类也是类,所有枚举类,都会隐式的继承自java.lang.Enum类枚举类中的每一个字段,都是该类的一个实例,获取字段枚举类名.字段名 ,字段...
  • 因为枚举类型很多,一个一个提供接口就有点儿太low了……,所以想到了java的反射机制。在网上找到了一个例子,作为参考:我并没有做得那么复杂,只是简单的使用了反射机制,直接上代码:接口类,所有枚举类型都...
  • 1. 首先理解反射 Java反射机制是在运行状态中,对于任意一个类(class文件),都可以知道该类的...2. java获取Class对象的三种方式 Class.forName(“类路径”); 调用属性,通过.class来获取其对应的Class对象;...
  • 简要介绍Java中的枚举

    千次阅读 2013-10-13 15:47:02
    在某些情况下,一个类的对象是有限而且固定的,例如季节类,它只有四个对象,这种实例有限而且固定的类,在Java里被称为枚举类。 手动实现枚举类: 1.通过private将构造器隐藏起来。 2.把这个类的所有...
  • 通过在枚举类中添加方法,遍历枚举类的所有对象进行判断,如下添加getOrderStatusEnum方法: import lombok.Getter; /** * @author: lichujun * @date: 2018-08-15 */ @Getter public enum OrderStatusEnum {...
  • JAVA枚举相对来说比.NET的枚举功能强大,感觉就像是一种简化版的类对象,可以有构造方法,可以重载,可以继承接口等等,但不能继承类,JAVA枚举在实际开发中应用相当频繁,以下几个封装方法在实际开发中可能用到,...
  • java枚举

    2020-09-01 15:27:27
    安全,java枚举类使用final修饰,不能被继承,实例均为static final修饰,构造器只能为私有,且在jvm层面限制不能被反射获取,天生有利于构造单例对象 使用注意点 1、java枚举类均继承自java.lang.Enum,故无法继承...

空空如也

空空如也

1 2 3 4 5 ... 10
收藏数 184
精华内容 73
关键字:

java获取所有枚举

java 订阅