ホームページ >Java >&#&チュートリアル >Java でジェネリック型のクラス リテラルを取得するにはどうすればよいですか?

Java でジェネリック型のクラス リテラルを取得するにはどうすればよいですか?

Barbara Streisand
Barbara Streisandオリジナル
2024-12-23 22:27:151042ブラウズ

How Can I Get a Class Literal for a Generic Type in Java?

Java でジェネリック型からクラス リテラルを取得する

クラス リテラルは、一般的に型を静的に表すために使用されます。ただし、ジェネリック型を扱うときに問題が発生します。

通常、非ジェネリック型の場合、クラス リテラルは構文 Foo.class を使用して取得できます。これを List などのジェネリック型に適用すると、型パラメーターがないため警告が発生します。不明な型パラメータを許可するためにワイルドカード (?) を追加しようとすると、型不一致エラーが発生します。さらに、List.class 構文を使用すると、構文エラーが発生します。

この問題は、Java の型消去機能に起因します。ジェネリック型はコンパイル中に生の型に変換されます。つまり、型引数は実行時に失われます。その結果、パラメーター化された型には独自の実行時表現がなく、対応する Class オブジェクトがありません。

したがって、List などのパラメーター化された型のクラス リテラルを取得することは不可能です。 List.class などのメソッドを使用します。これは、Java がコンパイル中にジェネリック型情報を削除し、生の型表現のみを残すためです。

以上がJava でジェネリック型のクラス リテラルを取得するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。