如何通过 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"));
我使用 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"));