Quelle est la différence entre ‘super’ et ‘extend’ dans Java Generics

J’essaie d’apprendre des génériques Java. Je ne sais pas quand vous utiliserez et quand vous utiliserez . Que signifie chacune de ces choses à propos de T? Disons que j’ai et , qu’est-ce que cela signifie?

J’ai lu plusieurs tutoriels sur sun.com mais je suis toujours perdu. Quelqu’un peut-il illustrer avec des exemples?

Merci!

Voir Effective Java 2nd Edition, article 28:

PECS

Extensions de P inducteur, C onsumer

Si votre paramètre est un producteur, il devrait être , si c’est un consommateur, il doit être .

Jetez un coup d’œil aux collections Google, elles savent comment l’utiliser, car elles ont Bloch;)

Cela dépend de la manière dont la hiérarchie d’inheritance le permet. Supposons que vous ayez une classe “Child” qui hérite de “Parent” qui hérite de “Grand-parent”.

accepte soit Parent, soit Child, tandis que accepte le parent ou le grand-parent.

Il existe trois types de caractères génériques:

  • ? extends Type ? extends Type : désigne une famille de sous-types de type Type . C’est le joker le plus utile.
  • ? super Type ? super Type : désigne une famille de super-types de type Type .
  • ? : Indique l’ensemble de tous les types ou aucun.