数组时协变的(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>之间就没有任何关系。