Extrait du chapitre 5 de Effective Java (génériques) :
// Two possible declarations for the swap method public static <E> void swap(List<E> list, int i, int j); public static void swap(List<?> list, int i, int j);
Laquelle de ces deux déclarations est préférable, et pourquoi ? Dans une API publique, la seconde est préférable car elle est plus simple. Vous transmettez une liste - n'importe quelle liste - et la méthode échange les éléments indexés. Il n'y a pas de paramètre de type à prendre en compte. En règle générale, si un paramètre de type n'apparaît qu'une seule fois dans une déclaration de méthode, remplacez-le par un joker.
Je ne comprends pas pourquoi la deuxième option est plus simple pour le client de mon API ? Je peux passer les mêmes paramètres à la première et à la deuxième méthode. De plus, la deuxième méthode nécessite une méthode d'aide pour la capture de caractères génériques. Quelqu'un pourrait-il m'expliquer pourquoi la seconde est recommandée ? Merci !