需求描述

项目业务前后端交互需要的一些特定值需要用枚举类型列举出来,并且每个枚举值对应的外部使用值不是固定的,
类似于 APPLE(“apple”,“苹果”) —> APLE 这样一个对应关系,而APLE是在数据库里配置的,不是固定的,在程序运行时从数据库加载到map里做映射,因为手动添加到数据库比较麻烦而且容易漏掉,于是想到利用接口加反射的方式,将所有的枚举类型列举出来,并根据一定规则生成sql语句插入数据库,然后直接去数据库手动修改映射值就可以了。

类继承关系为:IMetadataDict.class 为接口,各个枚举类实现这个接口,这样就不会将无关的枚举类也包含进去。

依赖及测试方法如下:

        <!-- 反射库 --><!-- https://mvnrepository.com/artifact/org.reflections/reflections --><dependency><groupId>org.reflections</groupId><artifactId>reflections</artifactId><version>0.10.2</version></dependency>
    public static void main(String[] args) throws NoSuchMethodException, InvocationTargetException, IllegalAccessException {Reflections reflections = new Reflections(IMetadataDict.class.getPackage().getName());Set<Class<? extends IMetadataDict>> set = reflections.getSubTypesOf(IMetadataDict.class);for (Class<? extends IMetadataDict> dict : set) {LOG.info("ClassName: {}", dict.getSimpleName());Method valueM = dict.getMethod("getValue");Method descM = dict.getMethod("getDesc");Method groupM = dict.getMethod("getGroupName");for (Object field : dict.getEnumConstants()) {String value = (String) valueM.invoke(field);String desc = (String) descM.invoke(field);String group = (String) groupM.invoke(field);LOG.info("group: {}, value: {}, desc: {}", group, value, desc);}}}

java反射获取所有接口实现类相关推荐

  1. java 反射 获取 实例_java通过类反射获取某个类的所有信息--代码实例

    package huang.de.wei; import java.lang.annotation.Annotation; import java.lang.reflect.Constructor; ...

  2. Java反射-静态/动态加载类

    title: Java反射-静态/动态加载类 date: 2019-05-28 18:50:00Java反射-静态/动态加载类 Class 类是对象,是java.lang.Class类的实例对象.任何 ...

  3. java反射获取注解id,通过反射获取注解(Annotation)

    以下实例,定义一个注解.通过反射获取. 主要功能:为所注解过的参数和方法附加一些信息可以获取. 定义注解. import java.lang.annotation.*; @Retention(Rete ...

  4. Java反射系列--Type接口及其子接口

    原文网址:Java反射系列--Type接口及其子接口_IT利刃出鞘的博客-CSDN博客 简介 说明 Type 是java反射机制中提供的一个接口,用来表示java中的所有类型的接口.它们包括原始类型. ...

  5. Java反射--获取类方法的泛型返回或泛型参数

    Java反射--获取类方法的泛型返回或泛型参数 一.测试类 public class Test02 {public void parameterTest(Map<Integer, Dog> ...

  6. Android利用Java反射获取用户手机的rom定制系统及版本,EMUI,MIUI,ColorOS,FunthouchOS等

    Android利用Java反射获取用户手机的rom定制系统版本及版本号,EMUI,MIUI,ColorOS,FunthouchOS等 前言 正文 结语 前言 现在手机厂商都推出了自己的基于Androi ...

  7. Java 反射 ---- 获取成员变量构造函数信息

    这一章我们通过Java的反射获取某个类的成员变量构造函数信息,话不多说直接上代码. 先贴工具类获取类信息的方法: package com.blockChain;import java.lang.ref ...

  8. java 反射获取父类的字段_java反射获取父类和子类字段值、赋值

    这里将告诉您java反射获取父类和子类字段值.赋值,具体操作过程:java反射获取字段值.赋值 import org.springframework.util.ReflectionUtils; imp ...

  9. 通过Java反射获取对象上的注解,java反射注解妙用-获取所有接口说明

    原标题:java反射注解妙用-获取所有接口说明 转载请注明出处:https://www.cnblogs.com/wenjunwei/p/10293490.html 前言 最近在做项目权限,使用shir ...

最新文章

  1. 5层模型中数据从源主机到目的主机之旅
  2. 计算机应用基础第四章知识点,计算机应用基础 第四章电子表格笔试知识点总结...
  3. 60、IPv6配置实验之RIP
  4. WPF命中测试示例(一)——坐标点命中测试
  5. DeepMind详解新WaveNet:比原来快千倍,语音更自然 | 附论文
  6. C# 跨设备前后端开发探索
  7. linux关闭远程服务器,linux – 远程主机关闭SSH连接
  8. 日期setMinutes()方法以及JavaScript中的示例
  9. OpenJudge NOI 1.7 14:大小写字母互换
  10. python全局变量定义_python全局变量和局部变量的概念
  11. 基于PHP的旅游网站的设计与实现论文
  12. RISC技术市场分析
  13. 2022年道路运输企业安全生产管理人员报名考试及道路运输企业安全生产管理人员模拟试题
  14. 精益创业实战 - 内容简介
  15. Java常见设计模式
  16. CSDN 技术问答升级规则
  17. 如何进行产品运营数据分析?
  18. 如何重装java tm_彻底重装JDK的方法
  19. plc梯形图的c语言写法,PLC梯形图讲解.ppt
  20. Python爬取酷狗音乐歌手信息

热门文章

  1. 微信公众平台开发(二) 微信公众平台示例代码分析
  2. 伯凡日知录--一万小时定律(第一天更新)
  3. 用HTMLParser解析html时报错:No module named 'htmlentitydefs'
  4. 传奇外网架设全套图文教程-Hero引擎
  5. IEEE802是什么?
  6. 如何将网页变成桌面屏保
  7. 【Python零基础快速入门系列 | 07】浪漫的数据容器:成双成对之字典
  8. kernel网络之软中断
  9. 开源倾情奉献:基于.NET打造IP智能网络视频监控系统
  10. RxJava2 转换操作符之FlatMap()方法