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 で配列を共変にするという決定がなぜなのかということです。Why are Arrays invariant, but Lists covariant?などの他の SO 投稿があります。、しかし、彼らはScalaに焦点を当てているようで、私は従うことができません.