Scala 中的协变和逆变

Aiur · Zellux at 
Java 数组先来看一个 Java 中的例子,Java 中的数组是协变的。也就是说,一个 String 数组(String[])是可以被当成 Object 数组(Object[])处理的:String[] a1 = { "abc" };Object[] a2 = a1;这种协变虽然在读取数组内容时不会有问题(a1 数组中的 String 元素可以被当成 Object 使用),但是修改数组内容时就会出现无法在编译期检测出来的错误了:a2[0] = new Integer(17)String s = a1[0] // java.lang.ArrayStoreException 之所以要采用这种……