ホームページ > Java > &#&チュートリアル > Java の特定の基本クラスを拡張するランタイム クラスを見つけるにはどうすればよいですか?

Java の特定の基本クラスを拡張するランタイム クラスを見つけるにはどうすればよいですか?

Susan Sarandon
リリース: 2024-11-26 08:37:12
オリジナル
581 人が閲覧しました

How Can I Find Runtime Classes Extending a Specific Base Class in Java?

Java の基本クラスから継承するランタイム クラスの検索

Java で、指定された基本クラスを拡張する実行中のアプリケーション内のクラスの検出長年の課題でした。従来、開発者はインスタンス化する必要があるクラスのリストを維持しており、新しいクラスが追加または削除されたときに更新が必要になる可能性がありました。

しかし、最近の Java の進歩により、このタスクははるかに簡単になりました。 org.reflections ライブラリは、継承関係に基づいてクラスをイントロスペクトし、取得するための便利なメカニズムを提供します。その仕組みは次のとおりです:

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

この例では、Reflections インスタンスは「com.mycompany」で始まるパッケージを検査するように構成されています。 getSubTypesOf メソッドは、MyInterface インターフェイスを拡張するすべてのクラスの Set を返します。

別の例では、具象クラスを検索してインスタンス化する方法を示します。

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());
    }
}
ログイン後にコピー

このコードでは、ライブラリは次の目的で使用されます。 java.util.List のサブクラスを検索します。ループはクラスを反復処理してその名前を出力し、ArrayList クラスの場合はインスタンスを作成し、要素の追加後にそのサイズを確認します。

以前、この機能は Java でネイティブにサポートされていませんでした。しかし、org.reflections のようなリフレクション ライブラリの出現により、開発者は継承関係に基づいてクラスを動的に検出してインスタンス化できるようになり、より柔軟で拡張可能なコード ベースが可能になりました。

以上がJava の特定の基本クラスを拡張するランタイム クラスを見つけるにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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