Maison > Java > javaDidacticiel > Pourquoi « étend T » est-il autorisé mais pas « implémente T » dans les limites des paramètres de type ?

Pourquoi « étend T » est-il autorisé mais pas « implémente T » dans les limites des paramètres de type ?

Linda Hamilton
Libérer: 2024-11-02 11:52:02
original
977 Les gens l'ont consulté

Why is

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>
Copier après la connexion

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!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal