Pourquoi « étend T » est-il autorisé mais pas « implémente T » dans les limites des paramètres de type ?
En Java, lors de la définition des limites du type paramètres, vous pouvez utiliser « étend T » mais pas « implémente T ». Cela peut sembler une distinction arbitraire, mais elle a une raison spécifique ancrée dans l'implémentation des génériques Java.
La raison de cette différence réside dans la sémantique de l'héritage et de l'implémentation. En Java, une classe ne peut implémenter qu’une seule interface, mais elle peut étendre plusieurs classes. Par conséquent, l'utilisation de « extends » dans les limites des paramètres de type permet plus de flexibilité dans la spécification des types autorisés.
Exemple :
Considérez le code suivant :
<code class="java">public interface C {} public class A<B extends C> {}</code>
Si nous devions autoriser les « impléments » dans les limites des paramètres de type, ce code serait valide. Cependant, cela soulèverait la question de savoir quelle interface la classe B devrait implémenter. Puisque plusieurs interfaces ne sont pas prises en charge dans ce contexte, cela entraînerait une ambiguïté.
D'un autre côté, utiliser "extends" dans la limite garantit que la classe B doit être un sous-type de l'interface C. Ceci est une contrainte plus générale qui n'introduit aucune ambiguïté.
Par conséquent, en limitant l'utilisation de "extends" dans les limites des paramètres de type pour les interfaces, Java garantit la cohérence et la clarté de son implémentation générique.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!