次のスニペットがあるとします。
Set<Class<? extends MyClass>> allClasses =
new Reflections("mypackage").getSubTypesOf(MyClass.class);
MyClass
ライブラリは、指定された packageおよび subpackagesで拡張されているすべてのクラスを再帰的に検索します。サブパッケージではなく、特定のパッケージでのみこれを行う必要があります。そうする方法はありますか?
次のスニペットがあるとします。
Set<Class<? extends MyClass>> allClasses =
new Reflections("mypackage").getSubTypesOf(MyClass.class);
MyClass
ライブラリは、指定された packageおよび subpackagesで拡張されているすべてのクラスを再帰的に検索します。サブパッケージではなく、特定のパッケージでのみこれを行う必要があります。そうする方法はありますか?
サブパッケージのタイプがスキャンされないように、入力フィルター (述語) を使用できます。
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...