Maison  >  Article  >  Java  >  Pourquoi ne pouvons-nous pas utiliser des « impléments » pour les limites des paramètres de type dans les génériques Java ?

Pourquoi ne pouvons-nous pas utiliser des « impléments » pour les limites des paramètres de type dans les génériques Java ?

DDD
DDDoriginal
2024-11-02 03:40:30946parcourir

Why Can't We Use

Différences liées aux supertypes dans les génériques Java

En Java, lors de la définition des limites des paramètres de type, vous avez peut-être remarqué la présence de « étend » mais pas les « instruments ». Cette disparité a suscité la curiosité de comprendre pourquoi c'est le cas.

Pourquoi aucun «implémente T» ?

Contrairement à «étend», qui indique une relation de supertype où le La sous-classe partage la même interface, « implémente » désigne une relation d'implémentation dans laquelle la classe implémente les méthodes spécifiées par l'interface. Cette distinction devient apparente lors de la compilation.

Considérons l'exemple ci-dessous :

<code class="java">interface C {}
class A<B extends C> {} // Allowed
class A<B implements C> {} // Not allowed</code>

Dans le premier exemple, le paramètre de type B est délimité par la classe C utilisant "extends". Cela permet à B d'être égal à ou une sous-classe de C. Dans le deuxième exemple, "impléments" est utilisé, ce qui permet uniquement à B d'être une interface implémentant C. Cependant, les paramètres de type ne peuvent pas spécifier d'interfaces d'implémentation.

Raison de "étend T"

Le langage de contraintes générique de Java se concentre sur les relations de supertype. "extends" vous permet de restreindre un paramètre de type à une superclasse ou une interface spécifique, garantissant que le type sera toujours attribuable à ce supertype. Cela maintient les principes de sécurité des types et d'héritage en Java.

D'un autre côté, les « impléments » ne correspondent pas à ce paradigme car ils définissent une relation d'implémentation plutôt qu'une relation de supertype. Par conséquent, "étend" est l'option privilégiée et unique pour définir des limites sur les paramètres de type.

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