博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
ClassUtils——可以由一个接口查找到所有的实现类,也可 以由父类查找到所有的子类
阅读量:3912 次
发布时间:2019-05-23

本文共 1614 字,大约阅读时间需要 5 分钟。

public class ClassUtils {

//给一个接口,返回这个接口的所有实现类public static List
getAllClassByInterface(Class c){ List
returnClassList = new ArrayList
(); //返回结果 //如果不是一个接口,则不做处理 if(c.isInterface()){ String packageName = c.getPackage().getName(); //获得当前的包名 try { List
allClass = getClasses(packageName); //获得当前包下以 及子包下的所有类 //判断是否是同一个接口 for(int i=0;i
getClasses(String packageName) throws ClassNotFoundException, IOException { ClassLoader classLoader = Thread.currentThread() .getContextClassLoader(); String path = packageName.replace('.', '/'); Enumeration
resources = classLoader.getResources(path); List
dirs = new ArrayList
(); while (resources.hasMoreElements()) { URL resource = resources.nextElement(); dirs.add(new File(resource.getFile())); } ArrayList
classes = new ArrayList
(); for (File directory : dirs) { classes.addAll(findClasses(directory, packageName)); } return classes;}private static List
findClasses(File directory, String packageName) throws ClassNotFoundException { List
classes = new ArrayList
(); if (!directory.exists()) { return classes; } File[] files = directory.listFiles(); for (File file : files) { if (file.isDirectory()) { assert !file.getName().contains("."); classes.addAll(findClasses(file, packageName + "." + file.getName())); } else if (file.getName().endsWith(".class")) { classes.add(Class.forName(packageName + '.' + file.getName().substring(0, file.getName().length() - 6))); } } return classes;}

}

转载地址:http://yyfrn.baihongyu.com/

你可能感兴趣的文章
集成平台集群任务动态分派
查看>>
【.net core】电商平台升级之微服务架构应用实战
查看>>
【翻译】.NET 5 Preview 1 发布
查看>>
使用GUI工具Portainer.io管控Docker容器
查看>>
Abp vNext发布v2.3!
查看>>
.NET Core开发实战(第27课:定义Entity:区分领域模型的内在逻辑和外在行为)--学习笔记...
查看>>
BeetleX之vue-autoui自匹配UI插件
查看>>
.NET Core开发实战(第28课:工作单元模式(UnitOfWork):管理好你的事务)--学习笔记...
查看>>
如何用 Blazor 实现 Ant Design 组件库?
查看>>
DotNetCore Web应用程序中的Session管理
查看>>
从业务需求抽象成模型解决方案
查看>>
Kafka
查看>>
Magicodes.IE 2.2发布
查看>>
应用交付老兵眼中的Envoy, 云原生时代下的思考
查看>>
.NET 开源项目 StreamJsonRpc 介绍[上篇]
查看>>
.NET Core微服务开发选项
查看>>
探讨NET Core数据进行3DES加密或解密弱密钥问题
查看>>
Vue 3拖更,尤雨溪介绍最新进展
查看>>
如何利用.NETCore向Azure EventHubs准实时批量发送数据?
查看>>
WPF 框架全构建环境虚拟机硬盘分享
查看>>