pom依赖

        <dependency><groupId>org.reflections</groupId><artifactId>reflections</artifactId><version>0.9.10</version></dependency>

代码实现:

public static void main(String[] args) throws ClassNotFoundException {//服务方接口和实现类所在的包路径Class superClass=Class.forName("cn.zhangxueliang.rpc.server.HelloRPC");Reflections reflections = new Reflections("cn.zhangxueliang.rpc.server");//得到某接口下的所有实现类Set<Class> ImplClassSet=reflections.getSubTypesOf(superClass);if(ImplClassSet.size()==0){System.out.println("未找到实现类");}else if(ImplClassSet.size()>1){System.out.println("找到多个实现类,未明确使用哪一个");}else {//把集合转换为数组Class[] classes=ImplClassSet.toArray(new Class[0]);System.out.println(classes[0].getName()); //得到实现类的名字}}

通过反射调用目标方法:

public static void main(String[] args) throws Exception {String className = null;//服务方接口和实现类所在的包路径Class superClass=Class.forName("cn.zhangxueliang.rpc.server.HelloRPC");Reflections reflections = new Reflections("cn.zhangxueliang.rpc.server");//得到某接口下的所有实现类Set<Class> ImplClassSet=reflections.getSubTypesOf(superClass);if(ImplClassSet.size()==0){System.out.println("未找到实现类");}else if(ImplClassSet.size()>1){System.out.println("找到多个实现类,未明确使用哪一个");}else {//把集合转换为数组Class[] classes=ImplClassSet.toArray(new Class[0]);className=classes[0].getName(); //得到实现类的名字}Object clazz = Class.forName(className).newInstance();Method method = clazz.getClass().getMethod("hello", new Class[]{String.class});Object result = method.invoke(clazz, new Object[]{"张学亮"});System.out.println(result);}

Java代码示例: 使用reflections工具类获取某接口下所有的实现类相关推荐

  1. java 获取所有实现类_Java动态获取实现某个接口下所有的实现类对象集合

    Java动态获取实现某个接口下所有的实现类对象集合 最近有个需求,我需要获取所有同一类型的定时任务的对象,并自动执行. 我想的方案是:直接获取某个接口下面所有的实现类的对象集合,方便以后只需要 实现这 ...

  2. Java查漏补缺(08)关键字:static、单例设计模式、理解main方法、类的成员之四:代码块、final关键字、抽象类、接口、内部类、枚举类、注解、包装类

    Java查漏补缺(08)关键字:static.单例设计模式.理解main方法.类的成员之四:代码块.final关键字.抽象类.接口.内部类.枚举类.注解.包装类 本章专题与脉络 1. 关键字:stat ...

  3. 大数据 java 代码示例_功能Java示例 第7部分–将失败也视为数据

    大数据 java 代码示例 这是称为" Functional Java by Example"的系列文章的第7部分. 我在本系列的每个部分中开发的示例是某种"提要处理程序 ...

  4. java schema校验_Json Schema 校验json,java代码示例

    Json Schema 校验json,java代码示例 1.json schema 入门请参考下面两篇博客 1.1Json Schema 快速入门 1.2Json Schema 简介 2.java代码 ...

  5. 大数据 java 代码示例_Java变量类型与示例

    大数据 java 代码示例 Java变量 (Java variables) Variables are the user-defined names of the memory blocks, and ...

  6. java检测工具_常用Java代码质量检测评估工具

    常用Java代码质量检测评估工具 1. PMD from http://pmd.sourceforge.net/ PMD能够扫描Java 源代码,查找类似以下的潜在问题: 可能的bug--try/ca ...

  7. webp动图压缩java代码示例

    很高兴为您解答.WebP动图压缩的Java代码示例如下: import java.awt.image.BufferedImage; import java.io.File; import java.i ...

  8. Java代码弱点与修复之——Se: Incorrect definition of Serializable class(可序列化类的定义不正确)

    弱点描述 Se: Incorrect definition of Serializable class,可序列化类的定义不正确. 该弱点属于低风险. "Se" 指的就是" ...

  9. java 获取子文件夹_JAVA之File类 获取一个目录下的所有文件夹和文件,包括子文件夹和子文件...

    package ioTest.io3; import java.io.File; /* * 获取一个目录下的所有文件夹和文件,包括子文件夹和子文件 . * 并将文件夹和文件名称打印在控制台上面.并且要 ...

最新文章

  1. Scala伴生类与伴生对象:apply方法/伴生对象可以访问伴生类的私有属性
  2. Linux进程与线程的区别
  3. linux打包压缩命令有哪些,Linux压缩打包命令使用方法有哪些呢?
  4. oracle 拆分逗号转行_一个列用逗号隔开,列转行,看看是否有更好的办法。
  5. 【C语言进阶深度学习记录】十 C语言中:struct的柔性数组和union分析
  6. ***error*** (zip#Browse) unzip not available on your system
  7. 斗地主AI算法——第七章の被动出牌(1)
  8. 为什么很多创业者选择餐饮行业?
  9. 华为qy2音乐如何转换为mp3_华为手机还有这种骚操作?开启这个功能,让你体验至尊级待遇...
  10. vue引入高德地图获取经纬度地址
  11. STC开天斧虚拟示波器使用
  12. 小程序地图定位,打开地图导航,选择位置
  13. Linux学习16 软件包和启动项管理
  14. RV1126笔记二十三:Nginx及cgi移植
  15. 手把手教会你如何玩转SpringMVC
  16. 断网的html页面,断网情况下,前端页面处理
  17. 苏教版四年级下册计算机说课稿,苏教版四年级下册语文《古诗两首》的说课稿4篇...
  18. 百度android sdk聚合,SDK接入 · 百度移动统计Android SDK使用手册
  19. SQL Server三层架构
  20. 基于物联网技术的智能化电信基站远程运维解决方案

热门文章

  1. 【机器学习入门】图解超经典的KNN算法
  2. 【机器学习基础】太棒了!这里有385篇自然语言处理和机器学习领域的综述总结...
  3. Spark性能优化 -- Spark SQL、DataFrame、Dataset
  4. 统计学习方法第十章作业:HMM模型—概率计算问题、Baum-Welch学习算法、维特比预测算法 代码实现
  5. 推荐系统中的长尾物品(Tail Items)推荐问题
  6. 0409互联网新闻 | 微信:朋友圈广告@好友评论互动能力全量开放;视频会议软件Zoom将于4月18日在纳斯达克交易所挂牌上市...
  7. 互联网1分钟 |1119
  8. 视频直播技术:最大限度保障流畅性和清晰度
  9. 只知道ajax?你已经out了
  10. mysql 开发进阶篇系列 32 工具篇(mysqladmin工具)