我很难弄清楚这一点。假设我有以下代码:Java协方差
class Animal { }
class Mammal extends Animal { }
class Giraffe extends Mammal { }
...
public static List<? extends Mammal> getMammals() { return ...; }
...
public static void main(String[] args) {
List<Mammal> mammals = getMammals(); // compilation error
}
为什么赋值会导致编译错误?该错误是一样的东西:
Type mismatch: cannot convert from List<capture#4-of ? extends Mammal> to List<Mammal>
根据我的协方差的理解,getMammals()
方法返回一个list
将始终包含Mammal
对象,所以它应该是分配。我错过了什么?
+ 1,但你能解释一下“列表或列表而不是列表”是什么意思?! :p – 2009-07-26 11:30:19
重新格式化以去除令人困惑的'列表或列表但不是列表':-) – 2009-07-26 11:32:14
该泛型被视为html,逃脱 – 2009-07-26 11:32:22