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

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

Barbara Streisand
リリース: 2024-11-26 03:50:11
オリジナル
166 人が閲覧しました

How Can I Dynamically Find All Subclasses of a Base Class in Java at Runtime?

Java アプリケーションのサブクラスを動的に識別する

Java プログラムは、緩やかに統合された .class ファイルを利用します。このため、実行時に基本クラスを拡張するすべてのサブクラスを動的に識別することが困難になります。ただし、この制限を軽減するメカニズムがあります。

org.reflections ライブラリ

org.reflections ライブラリは、実行時にサブクラスを検出するための強力なソリューションを提供します。アノテーションとリフレクションを利用して、クラスとその関係を内省します。次のコード スニペットは、その使用法を示しています。

Reflections reflections = new Reflections("com.mycompany");
Set<Class<? extends MyInterface>> classes = reflections.getSubTypesOf(MyInterface.class);
ログイン後にコピー

ここで、「com.mycompany」はクラスをスキャンするパッケージです。このコードは、指定されたパッケージ内の MyInterface のすべてのサブタイプをキャプチャします。

使用例

たとえば、次のコードを考えてみましょう。

public static void main(String[] args) throws IllegalAccessException, InstantiationException {
    Reflections reflections = new Reflections("java.util");
    Set<Class<? extends List>> classes = reflections.getSubTypesOf(java.util.List.class);
    for (Class<? extends List> aClass : classes) {
        System.out.println(aClass.getName());
        if(aClass == ArrayList.class) {
            List list = aClass.newInstance();
            list.add("test");
            System.out.println(list.getClass().getName() + ": " + list.size());
        }
    }
}
ログイン後にコピー

Thisコードは、java.util パッケージ内の List のすべてのサブタイプを反復処理します。具体的には、ArrayList を識別し、リフレクションを使用してインスタンスを作成する機能を示します。出力には次のものが含まれます:

java.util.LinkedList
java.util.AbstractSequentialList
java.util.Vector
java.util.ArrayList: 1
ログイン後にコピー

以上がJava の基本クラスのすべてのサブクラスを実行時に動的に検索するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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