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