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 サイトの他の関連記事を参照してください。