suchen
HeimJavajavaLernprogrammWarum können wir das Schlüsselwort „super' nicht für Typparametergrenzen in Java Generics verwenden?

Why Can't We Use 'super' Keyword for Type Parameter Bounds in Java Generics?

Begrenzen von Generika mit dem Schlüsselwort „super“: Eine umfassende Erklärung

Java-Generika ermöglichen Typsicherheit und Wiederverwendbarkeit von Code. Ein Aspekt von Generika ist die Typbegrenzung, bei der ein Typparameter auf eine bestimmte Subtypbeziehung beschränkt werden kann. Im Gegensatz zu Platzhaltern können Typparameter jedoch nicht mit dem Schlüsselwort „super“ begrenzt werden.

In der Collection-Schnittstelle akzeptiert die toArray-Methode ein Argument vom Typ „S[]“, wobei „S“ ein Typparameter ist. Es stellt sich die Frage, warum die Methode nicht als „“ deklariert ist. anstelle eines Platzhalters „“.

Die Antwort liegt im Verhalten der „Super“-Begrenzung. Während „super“ normalerweise mit Platzhaltern () verwendet wird, hat die Anwendung auf Typparameter (' anstelle von '>) Auswirkungen eine unbeabsichtigte Konsequenz. Object ist die Oberklasse aller Referenztypen, was bedeutet, dass „Object[]“ ein gültiges Argument für „>“ ist. zur Kompilierungszeit. Dies macht den Zweck der Bindung zunichte, da jedes Referenztypargument übergeben werden könnte, auch solche, die keine Unterklassen von „T“ sind.

Daher würde die „Super“-Begrenzung von Typparametern nicht den erwarteten Schutz bieten ungültige Argumente. Zur Veranschaulichung: Die hypothetische Methode „> S[] toArray(S[] a)' mit '' da „Integer“ immer noch ein Argument vom Typ „String[]“ zulassen würde, obwohl „String“ keine Oberklasse von „Integer“ ist. Da „String[]“ ein „Objekt[]“ ist, würde es die „Super“-Grenze erfüllen.

Diese Einschränkung ergibt sich aus dem Zusammenspiel zwischen Generika und Arrays. Für Generics und Arrays gelten unterschiedliche Kovarianzregeln, die zum beobachteten Verhalten führen.

Es ist wichtig zu beachten, dass diese Einschränkung nur für Typparameter gilt. Platzhalter können weiterhin mit „super“ gebunden werden, um Varianz auszudrücken, wie in „' in der toArray-Methode, was eine größere Flexibilität ermöglicht.

Weitere Einblicke zu Generika und Typbegrenzung finden Sie in den folgenden Ressourcen:

  • Java-Tutorials/Generika
  • Java Generics: Was ist PECS?
  • Was ist der Unterschied zwischen Super und Extens in Java Generics

Das obige ist der detaillierte Inhalt vonWarum können wir das Schlüsselwort „super' nicht für Typparametergrenzen in Java Generics verwenden?. 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

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

AI Hentai Generator

AI Hentai Generator

Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

R.E.P.O. Energiekristalle erklärten und was sie tun (gelber Kristall)
1 Monate vorBy尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Beste grafische Einstellungen
1 Monate vorBy尊渡假赌尊渡假赌尊渡假赌
Will R.E.P.O. Crossplay haben?
1 Monate vorBy尊渡假赌尊渡假赌尊渡假赌

Heiße Werkzeuge

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

WebStorm-Mac-Version

WebStorm-Mac-Version

Nützliche JavaScript-Entwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

DVWA

DVWA

Damn Vulnerable Web App (DVWA) ist eine PHP/MySQL-Webanwendung, die sehr anfällig ist. Seine Hauptziele bestehen darin, Sicherheitsexperten dabei zu helfen, ihre Fähigkeiten und Tools in einem rechtlichen Umfeld zu testen, Webentwicklern dabei zu helfen, den Prozess der Sicherung von Webanwendungen besser zu verstehen, und Lehrern/Schülern dabei zu helfen, in einer Unterrichtsumgebung Webanwendungen zu lehren/lernen Sicherheit. Das Ziel von DVWA besteht darin, einige der häufigsten Web-Schwachstellen über eine einfache und unkomplizierte Benutzeroberfläche mit unterschiedlichen Schwierigkeitsgraden zu üben. Bitte beachten Sie, dass diese Software

Dreamweaver Mac

Dreamweaver Mac

Visuelle Webentwicklungstools