Heim  >  Artikel  >  Java  >  Warum ist „erweitert T“ für Typparametergrenzen in Java zulässig, nicht jedoch „implementiert T“?

Warum ist „erweitert T“ für Typparametergrenzen in Java zulässig, nicht jedoch „implementiert T“?

Barbara Streisand
Barbara StreisandOriginal
2024-11-02 06:25:29899Durchsuche

Why is

Extends vs. Implements in generischen Typparametergrenzen

Frage:

Warum steht in Java „extends T“? zum Definieren von Typparametergrenzen zulässig, aber „implementiert T“ ist nicht zulässig?

Zum Beispiel ist der folgende Code verboten:

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

Solange dieser Code gültig ist:

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

Antwort:

Semantisch gibt es innerhalb der generischen Einschränkungssprache keine Unterscheidung zwischen „erweitert“ und „implementiert“. Die Einschränkungsmöglichkeiten sind auf „extends“ und „super“ beschränkt, was die Richtung der Vererbung oder Zuweisungskompatibilität widerspiegelt.

  • extends T: Die mit dem Typparameter verknüpfte Klasse kann sein dem Typ T zugewiesen oder von diesem erweitert.
  • super T: Die mit dem Typparameter verknüpfte Klasse kann vom Typ T zugewiesen werden.

Im Im Falle des ungültigen Codebeispiels wird versucht, „implements“ zu verwenden, um eine Einschränkung für den Typparameter B zu definieren. „implements“ ist jedoch kein gültiger Einschränkungstyp und daher nicht zulässig.

Das obige ist der detaillierte Inhalt vonWarum ist „erweitert T“ für Typparametergrenzen in Java zulässig, nicht jedoch „implementiert T“?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn