私はこれを把握しようとしています。次のコードがあるとします: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()
方法は、それが割り当て可能でなければなりませんので、必ずMammal
オブジェクトが含まれますlist
を返します。私は何が欠けていますか?
+1、しかし、あなたは「リストまたはリストではないがリスト」が何を意味するのか説明できますか? :p –
混乱している「List or List but not list」を取り除くために書式を変更しました:-) –
ジェネリックはhtmlとして扱われました。エスケープ –