Je ne comprends pas pourquoi je reçois ces erreurs de compilation:supérieur borné wildcards provoquant une erreur de compilation en Java
1:
La méthode add (? Capture # 1 de Prolonge Exec.Bird) dans la liste des types ne sont pas applicables pour les arguments (Exec.Sparrow)
2:
le méth od ajouter (capture # 2-of? étend Exec.Bird) dans la liste des types est pas applicable pour les arguments (Exec.Bird)
static class Bird{}
static class Sparrow extends Bird{}
public static void main(String[] args){
List<? extends Bird> birds = new ArrayList<Bird>();
birds.add(new Sparrow()); //#1 DOES NOT COMPILE
birds.add(new Bird());// //#2 DOES NOT COMPILE
}
Concernant # 1: avec 'Liste exitends Bird> 'vous dites réellement * tout type qui est un sous-type de' Bird' *. Cela signifie qu'il peut être un Sparrow, mais il peut également s'agir d'un Blackbird. Si vous essayez d'ajouter un 'Sparrow' à une liste qui * pourrait * contenir uniquement' Blackbird's, cela ne fonctionnera pas. –