Dlaczego tablice są kowariantne, ale generyczne są niezmienne?

Ze skutecznej Javy autorstwa Joshua Blocha,

Tablice różnią się od typu ogólnego na dwa ważne sposoby. Pierwsze tablice są kowariantne. Ogólne są niezmienne.

Covariant oznacza po prostu, że X jest podtypem Y, a X [] będzie również podtypem Y []. Tablice są kowariantne Jako ciąg jest podtypem Obiekt Tak

String[] is subtype of Object[]

Niezmiennik oznacza po prostu, niezależnie od tego, czy X jest podtypem Y czy nie,

 List<X> will not be subType of List<Y>.

Moje pytanie brzmi: dlaczego decyzja o tworzeniu kowariantnych tablic w Javie? Istnieją inne posty SO, takie jakDlaczego tablice są niezmienne, ale lista kowariancji?, ale wydają się być skupione na Scali i nie jestem w stanie tego śledzić.

questionAnswers(8)

yourAnswerToTheQuestion