Wenn wir begrenzte Platzhalter mit super verwenden, bedeutet dies, dass der Typparameter der angegebene Typ sein kann oder eine seiner Superklassen. Beispiel: Liste Supernummer> gibt an, dass die Liste Objekte vom Typ „Number“ oder eine ihrer übergeordneten Klassen enthalten kann.
In Ihrem ersten Beispiel wurde die Liste list als deklariert Liste Supernummer> kann kein Objekt annehmen, da Objekt keine Unterklasse von Zahl ist. Andererseits ist Integer eine Unterklasse von Number und kann daher zur Liste hinzugefügt werden.
In Ihrem zweiten Beispiel haben Sie versucht, eine List< Zeichenfolge> zu einer Methode, die ein List erwartet super Nummer>. Dieser Kompilierungsfehler tritt auf, weil String keine Unterklasse von Number ist. Die von Ihnen dargestellte Logik ist falsch: Das Objekt ist keine Oberklasse von Number und String ist keine Unterklasse von Number.
Im Gegensatz zu nach unten begrenzten Wildcards können nach oben begrenzte Wildcards nicht als Produzenten verwendet werden. Das bedeutet, dass Sie keine einzelnen Elemente aus einer List abrufen können. super Nummer>. Diese Einschränkung besteht, um Verstöße gegen die Typsicherheit zu verhindern.
Begrenzte Platzhalter mit Super ermöglichen es uns, Sammlungen zu erstellen, die Objekte mehrerer Typen verbrauchen können, die von einer gemeinsamen Oberklasse erben . Allerdings sollten wir beim Hinzufügen von Elementen zu diesen Sammlungen vorsichtig sein, da wir keine Objekte hinzufügen können, die keine Unterklassen der angegebenen Oberklasse sind.
Das obige ist der detaillierte Inhalt vonWie funktioniert Java Generics? Super`-Wildcards funktionieren und was sind ihre Einschränkungen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!