Java のジェネリックとは何ですか?ジェネリックを使用する利点は何ですか?
ジェネリック型は次のとおりです。 Java SE 1.5 の新機能。ジェネリックの本質はパラメータ化された型であり、これは、操作対象のデータ型がパラメータとして指定されることを意味します。
利益:#2。後方および後方互換性#3。一般化されたコード、コードをもっと再利用できます
# 4。高性能、コード、コードGJ (汎用 JAVA) で書かれたものは Java 用にコンパイルできます。サーバーと仮想マシンはより多くの型情報をもたらし、Java プログラムをさらに最適化するための条件を提供します。
Java ではジェネリックスはどのように機能しますか?型消去とは何ですか?どのように機能しますか?
1. 型チェック: バイトコードを生成する前に型チェックを提供します
2. 型消去: すべての型パラメーターは、クラス、変数、メソッドを含む修飾された型に置き換えられます (型消去) )3. 型消去とポリモーフィズムが競合する場合、問題を解決するためにサブクラスでブリッジ メソッドが生成されます。
4. ジェネリック メソッドが呼び出された場合、戻り値の型が消去され、キャストが行われます。メソッドが呼び出されるときに挿入されます。
型の消去:
すべての型パラメーターは、修飾された型に置き換えられます:
たとえば、T-> ;Object ? extends BaseClass->BaseClass
仕組み:
ジェネリックスは type Erasure を通じて実装され、コンパイラはコンパイル時にすべての型関連情報を消去します。したがって、実行時に型に関連する情報はありません。たとえば、List は、実行時に 1 つのリストだけで表されます。
これの目的は、Java 5 より前のバージョンで開発されたバイナリ クラス ライブラリとの互換性を確保することです。コンパイラがジェネリック型をプリミティブ型に変換しているため、実行時に型パラメーターにアクセスすることはできません。 このジェネリックに関する質問への回答に応じて、ジェネリックが型消去によって実装される理由や、コンパイラ エラーを引き起こす間違ったジェネリックを示すなど、いくつかのフォローアップの質問が表示されます。
List