ホームページ > Java > &#&チュートリアル > Java Reflection は実行時に汎用パラメータ型を取得できますか?

Java Reflection は実行時に汎用パラメータ型を取得できますか?

Susan Sarandon
リリース: 2024-12-17 17:54:10
オリジナル
578 人が閲覧しました

Can Java Reflection Retrieve Generic Parameter Types at Runtime?

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

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