J'ai du mal à comprendre cela. Dire que j'ai le code suivant:Java covariance
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
}
Pourquoi l'affectation entraîne-t-elle une erreur de compilation? L'erreur est quelque chose comme:
Type mismatch: cannot convert from List<capture#4-of ? extends Mammal> to List<Mammal>
Selon ma compréhension de covariance, la méthode renvoie un getMammals()
list
qui contiennent toujours des objets Mammal
il devrait donc être cessible. Qu'est-ce que je rate?
+ 1, mais pourriez-vous expliquer ce que signifie "Liste ou Liste mais pas Liste" ?! : p –
Reformaté pour supprimer la liste confuse «List ou List mais pas List» :-) –
Les génériques étaient traités comme html, échappés –