我使用org.reflections
库扫描ClassPath并获取类。这是我的代码:
Reflections ref = new Reflections();
Set<Class<? extends Service>> classes = new HashSet<>();
for (Class<? extends Service> subType : ref.getSubTypesOf(Service.class)) {
if (!Modifier.isAbstract(subType.getModifiers())) {
classes.add(subType);
}
}
但是我遇到了一个问题。这需要太多时间。同时我无法设置包裹
new Reflections("my.pack");
因为我想保留将来添加Service类的功能。我如何加快这个过程?是否可以排除
rt.jar
个包装? 最佳答案
使用FilterBuilder
至少排除java
根软件包。
指定SubTypesScanner
可能会有所帮助,因为这就是您正在执行的操作。
Reflections ref = new Reflections(new SubTypesScanner(),
new FilterBuilder().excludePackage("java"));