ホームページ > Java > &#&チュートリアル > Java で実行時に基本クラスのすべてのサブクラスを検索するにはどうすればよいですか?

Java で実行時に基本クラスのすべてのサブクラスを検索するにはどうすればよいですか?

Mary-Kate Olsen
リリース: 2024-12-07 21:41:13
オリジナル
532 人が閲覧しました

How Can I Find All Subclasses of a Base Class at Runtime in 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 サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート