首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >列出Java中特定类的所有子类

列出Java中特定类的所有子类
EN

Stack Overflow用户
提问于 2020-01-14 22:01:51
回答 2查看 344关注 0票数 3

如何在Java中列出特定类的所有子类或特定接口的所有实现者?使用Eclipse,我可以做到这一点,但我想知道如何以编程方式执行此操作?如果你有任何建议,请一定要提出来。

EN

回答 2

Stack Overflow用户

发布于 2020-01-14 22:11:46

看看reflection,这是它的基本用法:

代码语言:javascript
运行
复制
Reflections reflections = new Reflections("com.package");    
Set<Class<? extends InterfaceExample>> classes = reflections.getSubTypesOf(InterfaceExample.class);
票数 4
EN

Stack Overflow用户

发布于 2020-01-14 22:28:38

据我所知,这至少需要以下步骤:

  1. 对于当前的类加载器,遍历类路径以获得文件夹和JAR的列表(这个,我知道如何只为URLClassLoader及其子类型,这是从列表中的每个文件夹或JAR) (1)知道其中的类并加载每个类(类加载器可能有问题,但您可能在大多数情况下通过它)
  2. 反映并找出实现的接口(如果您正在寻找接口的子类)或超类(如果是一个类)。这必须迭代进行,直到您到达java.lang.Object或目标接口或类。

如果父类加载器加载了父类接口或类(比如java.util.List),则对父类加载器重复上述步骤。

说完了,做好了,请准备好进行内存和CPU的繁重处理。:)

Eclipse,我认为逐步索引层次结构。这就是为什么,在大多数情况下,它显示结果的速度很快。我不确定,但如果Eclipse提供了一种在运行时(通过插件实现)访问其类型层次结构列表的方法,那么研究一下Eclipse可能是值得的。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59735326

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档