3

次のスニペットがあるとします。

Set<Class<? extends MyClass>> allClasses = 
  new Reflections("mypackage").getSubTypesOf(MyClass.class);

MyClassライブラリは、指定された packageおよび subpackagesで拡張されているすべてのクラスを再帰的に検索します。サブパッケージではなく、特定のパッケージでのみこれを行う必要があります。そうする方法はありますか?

4

2 に答える 2

3

サブパッケージのタイプがスキャンされないように、入力フィルター (述語) を使用できます。

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...
于 2014-05-15T10:00:16.747 に答える