リフレクションを使用してパッケージ内のすべてのクラスを見つけることができますか? 質問する

リフレクションを使用してパッケージ内のすべてのクラスを見つけることができますか? 質問する

特定のパッケージ内のすべてのクラスまたはインターフェースを見つけることは可能ですか?(例えば、Package、そうではないようです。

ベストアンサー1

クラス ローダーの動的な性質のため、これは不可能です。クラス ローダーは VM にどのクラスを提供できるかを指示する必要はなく、代わりにクラスの要求が渡されるだけで、クラスを返すか例外をスローする必要があります。

ただし、独自のクラス ローダーを作成したり、クラスパスとその jar を調べたりすると、この情報を見つけることができます。ただし、これはリフレクションではなく、ファイル システム操作を介して行われます。これを行うのに役立つライブラリもあるかもしれません。

リモートで生成されたクラスや配信されたクラスがある場合、それらのクラスを検出することはできません。

通常の方法は、アクセスする必要があるクラスをファイルのどこかに登録するか、別のクラスで参照することです。または、命名に関しては規則を使用します。

補遺:リフレクションズ ライブラリ現在のクラスパス内のクラスを検索できます。パッケージ内のすべてのクラスを取得するために使用できます。

 Reflections reflections = new Reflections("my.project.prefix");

 Set<Class<? extends Object>> allClasses = 
     reflections.getSubTypesOf(Object.class);

おすすめ記事