8
配列は共変であるのにジェネリックは不変なのはなぜですか?
Joshua BlochのEffective Javaから、 配列は、2つの重要な点でジェネリック型と異なります。最初の配列は共変です。ジェネリックスは不変です。 共変とは、XがYのサブタイプの場合、X []もY []のサブタイプになることを意味します。文字列はオブジェクトのサブタイプなので、配列は共変です String[] is subtype of Object[] 不変とは、XがYのサブタイプであるかどうかに関係なく、 List<X> will not be subType of List<Y>. 私の質問は、なぜJavaで配列を共変にする決定をしたのですか?なぜ配列は不変なのにリストは共変なのかなどの他のSOの投稿があります。、しかしそれらはScalaに焦点を合わせているようで、私はついていけません。