8
为什么数组是协变的,而泛型是不变的?
摘自Joshua Bloch的Effective Java, 数组在两个重要方面不同于通用类型。第一数组是协变的。泛型是不变的。 协变量仅表示如果X是Y的子类型,则X []也将是Y []的子类型。数组是协变的,因为字符串是Object的子类型,所以 String[] is subtype of Object[] 不变式仅表示X是否为Y的子类型, List<X> will not be subType of List<Y>. 我的问题是为什么要在Java中使数组协变的决定?还有其他SO帖子,例如“ 为什么数组不变”,但“列表协变”?,但是它们似乎专注于Scala,我无法跟踪。