在jdk lib中查找给定类的子类

时间:2015-01-20 09:16:20

标签: java subclass

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

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

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

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

1 个答案:

答案 0 :(得分:1)

为什么不尝试使用链接中的某个解决方案?

使用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());
}