如何通过 Java 中的反射 API 加速 class 扫描?

How to speed up the class scan via Reflection API in Java?

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

因为我想保存一个以后添加服务的能力类。我怎样才能加速这个过程?是否可以排除 rt.jar 包?

使用FilterBuilder至少排除java根包。

指定 SubTypesScanner 可能会有所帮助,因为这就是您正在做的事情。

Reflections ref = new Reflections(new SubTypesScanner(),
                                  new FilterBuilder().excludePackage("java"));