给定以下代码片段:
Set<Class<? extends MyClass>> allClasses =
new Reflections("mypackage").getSubTypesOf(MyClass.class);
该库会递归搜索给定包及其子包中所有继承MyClass
的类。我需要仅在给定包中执行此操作,即不在其子包中执行。是否有方法可以实现这样的要求?
给定以下代码片段:
Set<Class<? extends MyClass>> allClasses =
new Reflections("mypackage").getSubTypesOf(MyClass.class);
该库会递归搜索给定包及其子包中所有继承MyClass
的类。我需要仅在给定包中执行此操作,即不在其子包中执行。是否有方法可以实现这样的要求?
new Reflections(new ConfigurationBuilder().
addUrls(ClasspathHelper.forPackage("my.pack")).
filterInputsBy(new FilterBuilder().
include("my\\.pack\\..*\\.class").
exclude("my\\.pack\\..*\\..*\\.class")));
import static org.reflections.ReflectionUtils.*;
getAll(reflections.getSubTypesOf(A.class),
withPattern(".*my\\.pack\\.(?!.*\\..*).*")); //ouch...
这是暴力破解,但是:
1)获取MyClass的子类。放入一个集合中。
2)迭代集合中的类;移除属于其他包的类(即那些_someClass.getPackage().equals(MyClass.class.getPackage())为false的类)