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

09-26 21:20
查看更多