ジェネリックスのサブクラスが代入できない問題

サブクラスはスーパークラスに代入できる(サブタイプはスーパータイプに代入できる)

Integer n = new Integer();
Number n2 = n;

サブクラスの配列はスーパークラスの配列に代入できる

Integer nn = new Integer{};
Number[] nn2 = nn;

しかし
サブクラスのリストはスーパークラスのリストに代入できない

List nn = new ArrayList();
List nn2 = nn;

なんだろう?安全にキャストできるように見えるが、違うのかな。ちょっと痒い。


無理にキャストは可能だが。。。

List nn2 = (List)nn;