Effective Javaを読んでいる㉕

配列よりリストを

配列と総称型の違い(共変)

  • SuperのサブタイプがSubならSubはSuperのサブタイプ
  • ListはListのサブタイプではない

  • Object[]Objectのサブクラス(あらゆるクラス)が格納できるが格納された配列の型のサブクラスの値しか格納できない(が、コンパイルが通ってしまう)

Object[] array =  new Long[1];//Longの配列をarrayに格納
array[0] = "test";//ここで例外がスローされるが、コンパイルエラーにはならない