Heim > Java > javaLernprogramm > Java Generics: Was ist mit dem „?' los? super` Schlüsselwort?

Java Generics: Was ist mit dem „?' los? super` Schlüsselwort?

Susan Sarandon
Freigeben: 2024-11-28 01:37:14
Original
254 Leute haben es durchsucht

Java Generics: What's the Deal with the `? super` Keyword?

Java-Generika: Das Rätsel um das Schlüsselwort „Super“ lösen

Obwohl Sie verschiedene Ressourcen zu Generika durchforstet haben, stoßen Sie immer noch auf Verwirrung bezüglich des „Super“-Schlüsselworts. super‘-Schlüsselwort. Lassen Sie uns in die Feinheiten der Verwendung von „super“ in Java-Generika eintauchen, um diese Zweifel auszuräumen.

1. Den Widerspruch mit „?“ auflösen super Number'

Beim Deklarieren einer Sammlung als 'Liste‘ können Sie davon ausgehen, dass es Objekte enthalten kann, die übergeordnete Elemente von Number sind. Das Gegenteil ist jedoch der Fall: Sie können Ganzzahlen, aber keine Objekte hinzufügen.

Der Grund liegt in der Erfassungskonvertierung. 'Liste' kann nur Typen erfassen, die Number und seine Supertypen erweitern können. Da Object eine Oberklasse von Number, aber keine Erweiterung ist, kann es nicht erfasst werden. Allerdings ist Integer ein Untertyp von Number und kann daher hinzugefügt werden.

2. Entschlüsseln des Verhaltens mit „List“ und 'test()'

Kompilieren von 'test(sList);' schlägt fehl, weil 'List' ist nicht durch 'List'. Während String ein Supertyp von Object ist, ist Object keine Erweiterung von Number. Dies verstößt gegen die Capture-Konvertierungsregeln.

Zusammenfassend: „? super T' gibt an, dass die Sammlung Objekte vom Typ T oder jede seiner Superklassen enthalten kann, die erweiterungskompatibel sind. Dies umfasst jedoch nicht alle Supertypen, sondern nur diejenigen, die den angegebenen Typ erweitern.

3. Warum „“ ist verboten

Java erlaubt kein „“ weil es zu unklaren Situationen führt. Beispiel: „Liste“ könnte sowohl „List“ erfassen und 'Liste' (da Object ein Supertyp aller Objekte ist). Dies würde die generische Typsicherheit verletzen.

Das obige ist der detaillierte Inhalt vonJava Generics: Was ist mit dem „?' los? super` Schlüsselwort?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage