数组协变性

数组时协变的(covariant)

也就是说对于Sub[]和Super[]两个数组,如果Sub是Super的子类,那么Sub[]也是Super[]的子类。例如下面的代码:

   Object[]objects=new Long[1];
   objects[0]="Strings";

这段代码在编译的时候是可以通过的,但是运行的时候会:

Exception in thread "main" java.lang.ArrayStoreException: java.lang.String

这是数组协变性带来的不便。

而列表则不会有这种情况。

List<Super>和List<Sub>之间就没有任何关系。

原文地址:https://www.cnblogs.com/macula7/p/1960489.html