我很難弄清楚這一點。假設我有以下代碼: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