Javaジェネリックス-型消去
ジェネリックは、コンパイル時の厳密な型チェックとジェネリックプログラミングの提供に使用されます。一般的な動作を実装するために、Javaコンパイラは型消去を適用します。型消去は、コンパイラーがジェネリックパラメーターを実際のクラスまたはブリッジメソッドに置き換えるプロセスです。型消去では、コンパイラーは余分なクラスが作成されないこと、および実行時のオーバーヘッドがないことを保証します。
型消去ルール
境界型パラメーターが使用されている場合は、ジェネリック型の型パラメーターをそれらの境界に置き換えます。
無制限の型パラメーターが使用されている場合は、ジェネリック型の型パラメーターをObjectに置き換えます。
型の安全性を維持するために型キャストを挿入します。
拡張ジェネリック型でポリモーフィズムを維持するためのブリッジメソッドを生成します。