J'étais d'apprentissage Génériques en Java et je suis venu près d'une pièce très intéressante de code. Je sais en Java, il est illégal d'ajouter la liste d'un type à l'autre.
List<Integer> integerList = new ArrayList<Integer>();
List<String> stringList=integerList;
Ainsi, dans la deuxième ligne, j'obtiens une erreur de compilation.
Mais si je crée une méthode générique à l'intérieur d'une classe comme ça,
class GenericClass <E>{
void genericFunction(List<String> stringList) {
stringList.add("foo");
}
// some other code
}
Et dans la classe principale appeler la méthode avec la liste d'Entier, je n'obtiens pas d'erreur.
public class Main {
public static void main(String args[]) {
GenericClass genericClass=new GenericClass();
List<Integer> integerList= new ArrayList<Integer>();
integerList.add(100);
genericClass.genericFunction(integerList);
System.out.println(integerList.get(0));
System.out.println(integerList.get(1));
}
}
Sortie
100
foo
Pourquoi je n'obtiens pas d'erreur?