いわゆるGenericsのメカニズムについては、ごく基本的な部分についてはJavaと同じように見える。型パラメータの境界(親の型としてXXXを持ってないといけないとか、子の型としてXXXを持ってないといけないとか)についても同じ。大きく違うのは、型パラメータの継承関係と、パラメータバウンドされた総称クラス(以下、面倒なので"総称クラス"と書く)自体の継承関係との関係、すなわち共変(Co-Variant)に関する部分。 といっても、共変自体にあまり詳しくないので、しばらく共変について勉強してみる。 共変 調べても定義らしい定義が出てこなくて困った。とりあえずは関連ありそうな記事として以下のようなものがあった。 Javaの理論と実践: Generics、了解! Javaの理論と実践: Genericsのワイルドカードを使いこなす、第1回 Javaの理論と実践: Genericsのワイルドカード