ジェネリクスメモ

   

Javaジェネリクスでスーパークラスなどを指定して使用できる型を制限する場合のメモです。

基本動作

ジェネリクスは変性非変なので、スーパークラスへの代入ができない。(下記のコードがエラーとなる)

境界型パラメータ

<T extends E>
Eを継承したクラスのみ使用可能となる。 但し変性非変のままなので、継承元への代入はできない。

境界ワイルドカード型

ワイルドカード型で型定義すると、スーパークラスへ代入可能となる。

上限境界ワイルドカード型

List<? extends T>
Tのサブクラスのみ使用可能となる。

下限境界ワイルドカード型

List<? super T>
Tのスーパークラスのみ使用可能となる。

 - Java