我使用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"));