【发布时间】:2017-02-02 15:30:36
【问题描述】:
我有以下代码:
Reflections reflections = new Reflections(packageName, new SubTypesScanner(false));
Set<Class<? extends Action>> allClasses = reflections.getSubTypesOf(Action.class);
for (Class<?> subTypeOfActionInPackageNameClass : allClasses) {
System.out.println(subTypeOfActionInPackageNameClass.getName());
}
我希望这会打印扩展 Action 的所有类的类名,以及扩展这些类的所有类,因为它们也间接扩展了 Action。例如 C 扩展 B 扩展 A。如果我做反射.getSubTypesOf(A.class);它只返回 B 类,但我希望它也能返回 C 类。
我怀疑这与 SubTypesScanner 有关,但我没有找到任何东西让它返回类 C。
现在的问题是:
a) 它应该表现得像那样吗?
b) 如果 a 的答案是肯定的,有没有办法返回所有直接和间接扩展类 A 的类?
提前致谢!
【问题讨论】:
-
你从哪里得到
Reflections? -
我认为来自here
-
这是导入。 import org.reflections.Reflections; 要我查找具体的库吗?
-
是的亚伦,就是那个。
-
你一定在某处犯了错误,我刚刚测试过它,它按你预期的那样工作:我有 A > B > C 类,
reflections.getSubTypesOf(A.class)确实产生 B 和 C。是您的所有课程都在同一个包中?看起来这个工具只解析你指定的包
标签: java reflection