저는 이것을 알아 내려고 애 쓰고 있습니다. 다음 코드를 가지고 있다고 가정 해 봅시다 :자바 공분산
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()
방법은 할당해야하므로 항상 Mammal
개체를 포함하는 list
를 반환 :이 오류는 같은입니다. 내가 뭘 놓치고 있니?
+1,하지만 "목록 또는 목록이지만 목록이 아니라"는 것을 설명 할 수 있습니까?! : p –
혼란스러운 'List or List but not list'를 제거하기 위해 재 포맷팅 됨 :-) –
제네릭이 html로 취급되었으며, 회피되었습니다 –