リフレクションを使用した Java でのジェネリック パラメーターの型付けを理解する
リフレクションを使用して Java のジェネリック パラメーターの型を識別することは、コード分析において貴重なテクニックとなる可能性がありますそして操作。この記事では、ジェネリック型パラメーターに関連付けられた実際のクラスの取得に関連する課題と解決策について詳しく説明します。
課題: ジェネリック型情報の取得
次のコード スニペットを考えてみましょう:
public final class Voodoo { public static void chill(List<?> aListWithTypeSpiderMan) { // Here we aim to obtain the Class object for 'SpiderMan' Class<?> typeOfTheList = ???; } public static void main(String... args) { chill(new ArrayList<SpiderMan>()); } }
私たちの目標は、ジェネリック パラメーターの型を決定することです。チルメソッド内で。具体的には、SpiderMan クラスを抽出します。
解決策: リフレクション メカニズムの利用
Java のリフレクション機能は、実行時にクラスとメソッドの情報にアクセスして操作するためのメカニズムを提供します。 。ジェネリック パラメーターの型を明らかにするには、次のアプローチを使用できます。
Class<?> persistentClass = (Class<?>) ((ParameterizedType)getClass().getGenericSuperclass()) .getActualTypeArguments()[0];
このコードでは、次のテクニックを利用します。
注
提供されたコード スニペットは、現在のクラス (Voodoo) が拡張されていることを前提としています。型パラメータを宣言するスーパークラス。そうでない場合は、それに応じてリフレクション コードを適応させる調整が必要になります。
以上がJava リフレクションを使用してジェネリック型情報を取得するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。