私はこれを理解するのに苦労しています。次のコードがあるとします。
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()
a を返すため、割り当て可能である必要があります。私は何が欠けていますか?list
Mammal