`

java 反射获取enum

    博客分类:
  • java
阅读更多
public interface EnumTypeInterface {
    int ordinal();
    String desc();
}

public enum InfoType implements EnumTypeInterface {
    DOWNLOAD_INFO("下载信息"),
    TASTE_AND_PURCHASE_INFO("试用&购买信息");

    private final String desc;

    InfoType(String desc) {
        this.desc = desc;
    }

    @Override
    public String desc() {
        return this.desc;
    }
}


@Api(description = EnumsController.DESC)
@RestController
@RequestMapping("/enums")
public class EnumsController {
    public static final String DESC = "类型参数";

    public static final String enumPkg = "api.xxx.com.xxxapp.enumeration";

    @ApiOperation(DESC+"列表")
    @GetMapping("/{typeName}")
    public List<HashMap<String, Object>> getEnumList(@PathVariable EnumTypes typeName) {
        Class<Enum> enumClass;
        try {
            enumClass = (Class<Enum>)Class.forName(String.join(".", enumPkg, typeName.toString()));
            Method values = enumClass.getMethod("values");
            EnumTypeInterface[] interfaces = (EnumTypeInterface[])values.invoke(null);
            return Arrays.stream(interfaces).map(enumMsg -> {
                HashMap<String, Object> map = Maps.newHashMap();
                map.put("value", enumMsg.ordinal());
                map.put("name", enumMsg.toString());
                map.put("desc", enumMsg.desc());
                return map;
            }).sorted(Comparator.comparing(t -> (Integer) t.get("value")))
            .collect(Collectors.toList());
        } catch (Exception e) {
            e.printStackTrace();
            throw new QcNotFoundException(DESC,typeName);
        }
    }
}

分享到:
评论

相关推荐

    java 通过反射获取枚举类,及枚举类的值,枚举类枚举实例名

    1. **获取枚举类**:要通过反射获取枚举类,首先需要得到其Class对象。这可以通过`Class.forName()`方法完成,提供枚举类的全限定名作为参数。 ```java Class&lt;Color&gt; colorClass = (Class) Class.forName(...

    Java枚举类型Enum的用法

    Java枚举类型(Enum)是Java SE 5.0引入的一种新的数据类型,它为开发者提供了更为强大且安全的方式来表示一组常量。枚举在Java中不仅是一个类,还是一种特殊的类型,允许我们定义自己的常量集合。接下来,我们将...

    java反射深入剖析(推荐)

    Java反射是Java语言提供的一种强大的机制,它允许我们在运行时检查和操作类、接口、字段和方法等。本文将深入剖析Java反射的概念及其在实际开发中的应用。 首先,我们需要了解,反射的核心在于`java.lang.Class`类...

    一个例子让你了解Java反射机制

    通过8个demo,你可以逐步深入理解Java反射机制,从简单的获取类信息,到创建对象,调用方法,访问字段,再到处理注解和泛型,全方位掌握这一强大的工具。每个demo都应该设计为解决一个特定的问题,例如如何动态调用...

    Java enum的用法详解

    通过反射,可以获取枚举的常量信息,如: ```java Field[] fields = Shape.class.getFields(); for (Field field : fields) { if (field.isEnumConstant()) { System.out.println(field.getName()); } } ``` 这将...

    Java期末复习——枚举与反射机制

    `java.lang.Class`类是反射的起点,我们可以通过以下三种方式获取`Class`对象: 1. 对象的`getClass()`方法。 2. 类的`.class`静态属性。 3. `Class.forName()`静态方法,通常用于加载类。 使用反射,我们可以: ...

    Java 8个反射实例

    Java反射是Java编程语言中的一个强大工具,它允许运行中的Java程序对自身进行检查并且可以直接操作程序的内部属性。在Java 8中,虽然没有引入重大的反射新特性,但原有的反射API仍然提供了丰富的功能,使得开发者...

    Java中的Enum的使用与分析

    可以通过反射获取枚举的全部信息,包括它的所有实例、方法、字段等。 10. **枚举与序列化** 枚举默认支持序列化,但一般不推荐将枚举实例作为序列化的主要数据对象,因为它们是固定不变的。 11. **枚举与枚举...

    java 枚举(enum) 详解(学习资料)

    Java 枚举(enum)是 Java 语言中的一个重要特性,自 Java 5 开始引入。枚举用于定义一组相关的常量,这些常量通常代表一个有限的、预定义的值集合。枚举类是一种特殊的类,它具有以下特点: 1. **枚举类的声明**:...

    java反射学习资料

    Java反射的核心在于`java.lang.Class`类,它代表了类的信息,通过反射可以获取到类的所有属性、方法、构造器等。例如,以下代码展示了如何使用反射判断一个对象所属的类: ```java A a = new A(); if (a.getClass()...

    Java JDBC简单入门之枚举(Enum)、泛型、反射、JDBC整合

    本篇将介绍如何在Java中使用枚举(Enum)、泛型、反射以及整合JDBC的基本步骤。 一、枚举(Enum) 枚举在Java中是一种特殊的类,用于定义一组预定义的常量。在JDBC操作中,枚举可以用来表示数据库中的状态或者类型...

    Java中enum的用法.pdf

    Java中的枚举(enum)类型是在JDK 1.5版本引入的一种强大的特性,它用于定义一组相关的常量。在C/C++等早期语言中,枚举通常是一种基本的数据类型,而在Java中,枚举是一种类,具有更多的功能和灵活性。 1. **什么...

    java反射例子 希望可以帮助大家

    以下是对标题和描述中提及的Java反射知识点的详细解释: 1. **获取对象的属性**: 在Java中,通过反射可以获取对象的属性。在示例代码中,`getProperty`方法展示了如何做到这一点。首先,通过`owner.getClass()`...

    Java 基础(7-8) - 反射机制详解.pdf

    这种动态获取的信息以及动态调⽤对象的⽅法的功能称为 Java 语⾔的反射机制。 一、反射基础 在 Java 中,反射机制是通过 Class 类实现的。Class 类是 java.lang 包中的一个类,存在于 JDK 中。Class 类的实例表示 ...

    Java反射学习和反射的应用场景干货都在这里

    Java反射是Java编程语言中的一个重要特性,它允许程序在运行时动态地获取类的信息并进行操作,如创建对象、调用方法、访问属性等。在本文中,我们将深入理解Java反射的概念,掌握其核心实现,并探讨它在实际开发中的...

    enum类型被intent所携带时各种情况的示例代码

    可以将enum的名称作为String传递,然后在接收端通过反射机制创建对应的enum实例。 ```java public enum MyEnum { VALUE1("value1"), VALUE2("value2"); private String name; MyEnum(String name) { this....

    java中enum的用法

    在Java编程语言中,`enum`(枚举)是一种特殊的类,用于定义一组预定义的常量。枚举类型在Java中被广泛使用,特别是在需要表示有限数量的固定值时,如一周的天数、颜色、状态等。以下是关于Java中`enum`的详细用法:...

    Java反射学习 getClass()函数应用

    Java反射是Java语言提供的一种强大的能力,允许程序在运行时检查和操作类、接口、对象等的内部结构。`getClass()`函数是Java反射的核心组成部分,它位于`java.lang.Object`类中,是所有Java对象的公共方法。通过`...

    Java中的reflect 反射的基本东西,

    Java中的反射机制是Java语言提供的一种强大的工具,它允许运行中的Java程序对自身进行检查并且可以直接操作程序的...通过理解并熟练掌握Java反射机制,开发者可以更好地利用Java的动态性,提高代码的可扩展性和维护性。

    java基础反射IO流线程模式

    反射是Java提供的一种可以在运行时分析类和对象的能力。通过反射,可以动态地创建和操作对象。 #### 获取字节码 可以通过`Class.forName()`方法获取类的字节码表示。 #### 构造方法 通过反射,可以访问类的私有...

Global site tag (gtag.js) - Google Analytics