Java リフレクションを介したジェネリック パラメータ タイプの取得
Java では、開発者は実行時にジェネリック パラメータの特定のタイプを取得する必要が生じる場合があります。 。この質問では、Java リフレクションを使用してこの一般的なタスクを達成する方法について説明します。
質問:
Java リフレクションを使用してジェネリック パラメータの特定の型を取得することは可能ですか?
シナリオ:
次のコードを考えてみましょう。スニペット:
public final class Voodoo { public static void chill(List<?> aListWithTypeSpiderMan) { // Here I'd like to get the Class-Object 'SpiderMan' Class typeOfTheList = ???; } public static void main(String... args) { chill(new ArrayList<SpiderMan>()); } }
回答:
はい、リフレクションを使用してジェネリック パラメーターの型を取得することは可能です。 1 つのアプローチには、次のコードを利用することが含まれます。
Class<T> persistentClass = (Class<T>) ((ParameterizedType)getClass().getGenericSuperclass()) .getActualTypeArguments()[0];
このコードでは、persistentClass はジェネリック型 (この場合は SpiderMan) の実際の型引数を表します。ただし、基礎となるリフレクション メカニズムは複雑になる可能性があることに注意することが重要です。そのため、実装を成功させるには、Java ジェネリックスとリフレクションを完全に理解することが推奨されます。
以上がJava Reflection は実行時に汎用パラメータ型を取得できますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。