java - 在 jdk 库中查找给定类的子类

标签 java subclass

我确实搜索了为给定类查找所有子类的解决方案,我看到了 this thread

据我所知,有一些工具可以做到这一点,例如 Reflections,在 Spring 框架中使用 ClassPathScanningCandidateComponentProvider,或 extcos。 但是在尝试了所有这些之后,似乎它们都不适用于 jdk 中的给定类(List、Map、Number,...)。

我查看了他们的源代码,看看他们是如何工作的,我认为原因是因为他们需要获取我们在其中寻找子类作为资源的包,以及函数 classloader.getResource(String name),对于 jdk 中的包名,总是返回 null。

那么,为什么 classloader.getResource(String name) 在 jdk 中为包名返回 null?有没有人知道获取也适用于 jdk 的子类的解决方案?

最佳答案

您为什么不尝试链接中的解决方案之一?

在下面找到一个使用 https://github.com/ronmamo/reflections.git 的简单示例。

在查看了test 类之后,这个例子就很简单了。

Reflections reflections = new Reflections(new ConfigurationBuilder()
        .setUrls(Arrays.asList(ClasspathHelper.forClass(List.class))));

Set<Class<? extends List>> subTypes = reflections.getSubTypesOf(List.class);
for (Class c : subTypes) {
    System.out.println("subType: " + c.getCanonicalName());
}

关于java - 在 jdk 库中查找给定类的子类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28041525/

相关文章:

java - 为高请求量配置 Jetty

python - 自动将对象从类转换为子类

java - 将instanceof 与其他继承数据一起使用时的混淆

python - issubclass() 行为根据导入而改变

python - 如何从 __subclasses__ 中删除类?

java - 如何映射包含名为 long 和 Short 的成员的 JSON 字符串

java - SonarQube 6.7.7 如何将 junit 测试计数添加到仪表板而不分析测试

java - HSSF。清除单元格

java - openjdk-11.0.1_linux-x64_bin.tar url 不起作用(https ://download. java.net/java/GA/jdk11/13/GPL/openjdk-11.0.1_linux-x64_bin.tar.gz )

iphone - 自定义 UIPickerView 上方的 UIToolbar 未接收触摸