Java代码示例: 使用reflections工具类获取某接口下所有的实现类
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工具类获取某接口下所有的实现类相关推荐
- java 获取所有实现类_Java动态获取实现某个接口下所有的实现类对象集合
Java动态获取实现某个接口下所有的实现类对象集合 最近有个需求,我需要获取所有同一类型的定时任务的对象,并自动执行. 我想的方案是:直接获取某个接口下面所有的实现类的对象集合,方便以后只需要 实现这 ...
- Java查漏补缺(08)关键字:static、单例设计模式、理解main方法、类的成员之四:代码块、final关键字、抽象类、接口、内部类、枚举类、注解、包装类
Java查漏补缺(08)关键字:static.单例设计模式.理解main方法.类的成员之四:代码块.final关键字.抽象类.接口.内部类.枚举类.注解.包装类 本章专题与脉络 1. 关键字:stat ...
- 大数据 java 代码示例_功能Java示例 第7部分–将失败也视为数据
大数据 java 代码示例 这是称为" Functional Java by Example"的系列文章的第7部分. 我在本系列的每个部分中开发的示例是某种"提要处理程序 ...
- java schema校验_Json Schema 校验json,java代码示例
Json Schema 校验json,java代码示例 1.json schema 入门请参考下面两篇博客 1.1Json Schema 快速入门 1.2Json Schema 简介 2.java代码 ...
- 大数据 java 代码示例_Java变量类型与示例
大数据 java 代码示例 Java变量 (Java variables) Variables are the user-defined names of the memory blocks, and ...
- java检测工具_常用Java代码质量检测评估工具
常用Java代码质量检测评估工具 1. PMD from http://pmd.sourceforge.net/ PMD能够扫描Java 源代码,查找类似以下的潜在问题: 可能的bug--try/ca ...
- webp动图压缩java代码示例
很高兴为您解答.WebP动图压缩的Java代码示例如下: import java.awt.image.BufferedImage; import java.io.File; import java.i ...
- Java代码弱点与修复之——Se: Incorrect definition of Serializable class(可序列化类的定义不正确)
弱点描述 Se: Incorrect definition of Serializable class,可序列化类的定义不正确. 该弱点属于低风险. "Se" 指的就是" ...
- java 获取子文件夹_JAVA之File类 获取一个目录下的所有文件夹和文件,包括子文件夹和子文件...
package ioTest.io3; import java.io.File; /* * 获取一个目录下的所有文件夹和文件,包括子文件夹和子文件 . * 并将文件夹和文件名称打印在控制台上面.并且要 ...
最新文章
- Scala伴生类与伴生对象:apply方法/伴生对象可以访问伴生类的私有属性
- Linux进程与线程的区别
- linux打包压缩命令有哪些,Linux压缩打包命令使用方法有哪些呢?
- oracle 拆分逗号转行_一个列用逗号隔开,列转行,看看是否有更好的办法。
- 【C语言进阶深度学习记录】十 C语言中:struct的柔性数组和union分析
- ***error*** (zip#Browse) unzip not available on your system
- 斗地主AI算法——第七章の被动出牌(1)
- 为什么很多创业者选择餐饮行业?
- 华为qy2音乐如何转换为mp3_华为手机还有这种骚操作?开启这个功能,让你体验至尊级待遇...
- vue引入高德地图获取经纬度地址
- STC开天斧虚拟示波器使用
- 小程序地图定位,打开地图导航,选择位置
- Linux学习16 软件包和启动项管理
- RV1126笔记二十三:Nginx及cgi移植
- 手把手教会你如何玩转SpringMVC
- 断网的html页面,断网情况下,前端页面处理
- 苏教版四年级下册计算机说课稿,苏教版四年级下册语文《古诗两首》的说课稿4篇...
- 百度android sdk聚合,SDK接入 · 百度移动统计Android SDK使用手册
- SQL Server三层架构
- 基于物联网技术的智能化电信基站远程运维解决方案
热门文章
- 【机器学习入门】图解超经典的KNN算法
- 【机器学习基础】太棒了!这里有385篇自然语言处理和机器学习领域的综述总结...
- Spark性能优化 -- Spark SQL、DataFrame、Dataset
- 统计学习方法第十章作业:HMM模型—概率计算问题、Baum-Welch学习算法、维特比预测算法 代码实现
- 推荐系统中的长尾物品(Tail Items)推荐问题
- 0409互联网新闻 | 微信:朋友圈广告@好友评论互动能力全量开放;视频会议软件Zoom将于4月18日在纳斯达克交易所挂牌上市...
- 互联网1分钟 |1119
- 视频直播技术:最大限度保障流畅性和清晰度
- 只知道ajax?你已经out了
- mysql 开发进阶篇系列 32 工具篇(mysqladmin工具)