Voyons quelques déclarations de méthodes de Set<E>
.Vérification de type générique à la compilation
public boolean add(E e);
public E get(int index);
Et essayons de l'utiliser.
List<Boolean> list = new ArrayList<Boolean>();
Integer i = list.get(0); //Predictably, here we get a compile error.
list.contains(new Integer(3)); //But this line is allowed. Why?
Même en équivalent non générique de ce code (comme je sais, ça va tout simplement transformé en elle), nous obtenons des erreurs de compilation dans les deux lignes.
List s = new ArrayList();
s.contains((Boolean)(new Integer(3)));
Integer i = (Boolean)s.get(3);
Alors pourquoi ne pas avoir l'erreur dans le cas générique?