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

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

Barbara Streisand
Barbara Streisandoriginal
2024-11-02 06:25:29894parcourir

Why is

Extensions et implémentations dans les limites des paramètres de type génériques

Question :

En Java, pourquoi "étend T" autorisé pour définir les limites des paramètres de type, mais les "impléments T" ne sont pas autorisés ?

Par exemple, le code suivant est interdit :

<code class="java">public interface C {}
public class A<B implements C> {}</code>

Tant que ce code est valide :

<code class="java">public class A<B extends C> {}</code>

Réponse :

Sémantiquement, il n'y a pas de distinction entre « étend » et « implémente » dans le langage de contrainte générique. Les possibilités de contraintes sont limitées à "extends" et "super", reflétant le sens de l'héritage ou la compatibilité des affectations.

  • extends T : La classe associée au paramètre de type peut être attribué ou étendu à partir du type T.
  • super T : La classe associée au paramètre de type peut être affectée à partir du type T.

Dans le Dans le cas de l'exemple de code invalide, il tente d'utiliser "implements" pour définir une contrainte sur le paramètre de type B. Cependant, "implements" n'est pas un type de contrainte valide et n'est donc pas autorisé.

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!

Déclaration:
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