ホームページ >Java >&#&チュートリアル >Java で実行時に基本クラスのすべてのサブクラスを検索するにはどうすればよいですか?
実行時に、特定の基本クラスを継承する Java アプリケーション内のすべてのクラスを検索する必要がある場合があります。これは、既存のコードを変更せずに動的なクラス ロードを実装したり、機能を追加したりする場合に役立ちます。
Java では、実行時にアプリケーションのクラスパス内の使用可能なすべてのクラスのリストを取得するのは簡単ではありません。ただし、このタスクを容易にするライブラリがあります。
そのようなライブラリの 1 つは org.reflections で、パッケージをスキャンしてクラスを検出するためのメソッドを提供します。 org.reflections を使用すると、特定の基本クラスを拡張するクラスのセットを取得できます。
Reflections reflections = new Reflections("com.mycompany"); Set<Class<? extends MyInterface>> classes = reflections.getSubTypesOf(MyInterface.class);
このコードは、「com.mycompany」パッケージを再帰的にスキャンし、「MyInterface」インターフェイスを実装するクラスを探します。 。その後、結果のクラスのセットを反復処理し、必要に応じてオブジェクトをインスタンス化できます。
この目的のためのもう 1 つの注目すべきライブラリは ClassGraph です。これは、別のアプローチを使用してクラスを検出し、クラスパスのクエリと検査のための包括的な API を提供します。 ClassGraph を使用すると、次のコードを使用して、基本クラスを拡張するクラスのリストを取得できます。
ClassGraph classGraph = new ClassGraph(); ClassInfoList classInfos = classGraph.getSubclasses(BaseClass.class);
ClassGraph は、jar ファイルやクラス ローダーを含むクラスパスを徹底的にスキャンします。アノテーションやメソッドの存在によるフィルタリングなどの追加機能を提供します。
これらのライブラリは、実行時に子クラスを動的にロードしてインスタンス化する便利な方法を提供します。クラスのリストのハードコーディングを回避することで、基本クラスやアプリケーション コードを変更せずに機能を簡単に追加または削除できます。
以上がJava で実行時に基本クラスのすべてのサブクラスを検索するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。