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 super Number>‘ 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 super Zahl>' 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
Kompilieren von 'test(sList);' schlägt fehl, weil 'List
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
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!