Avatar ·

Qu'est-ce que PECS (Producer Extends Consumer Super) dans les generics Java ?

Bonjour à tous ! Je code en Java depuis quelques mois, mais je suis toujours confus avec les wildcards dans les generics. J'ai lu sur PECS, mais en pratique je ne comprends toujours pas quand utiliser `? extends T` et quand utiliser `? super T`. Voici un exemple concret qui me trouble. J'ai une méthode qui doit copier des éléments d'une liste à une autre : ```java public static void copy(List src, List dest) { for (Object item : src) { dest.add(item); // Erreur de compilation ! } } ``` Le compilateur se plaint de `dest.add(item)`. Je comprends qu'il faut utiliser des bounded wildcards, mais je n'arrive pas à déterminer lesquels. Supposons que j'ai une hiérarchie de classes : `Animal` → `Dog` → `Puppy`. Je veux écrire une méthode qui : 1. Lit des objets depuis une liste (par exemple, une liste de `Dog`) 2. In