Heim >Java >javaLernprogramm >Wie funktioniert das Schlüsselwort „super' von Java Generics mit begrenzten Platzhaltern und welche Einschränkungen hat es?
Super-Schlüsselwort von Java Generics: Verwendung und Einschränkungen verstehen
Generika erweitern die Leistungsfähigkeit von Java-Sammlungen, indem sie die Anpassung von Datentypen ermöglichen Einbußen bei der Typensicherheit. Das Schlüsselwort super spielt in diesen generischen Sammlungen eine entscheidende Rolle.
Begrenzte Platzhalter verstehen
Bei der Deklaration einer generischen Sammlung kann das Schlüsselwort super mit begrenzten Platzhaltern verwendet werden. Mit diesem Platzhaltertyp kann eine Sammlung einen bestimmten Typ oder seine Supertypen enthalten. Zum Beispiel:
List<? super Number> list = null;
Diese Deklaration bedeutet, dass die Liste Number-Objekte oder jede ihrer Superklassen, wie z. B. Object, enthalten kann.
Elemente zu begrenzten Wildcard-Sammlungen hinzufügen
Es ist wichtig zu beachten, dass das Hinzufügen von Elementen zu begrenzten Platzhaltersammlungen strengen Typsicherheitsregeln unterliegt. Im obigen Beispiel:
Testen der Grenzen von Super Platzhalter
Entgegen den Erwartungen lässt sich der folgende Code nicht kompilieren:
static void test(List<? super Number> param) { param.add(new Integer(2)); } public static void main(String[] args) { List<String> sList = new ArrayList<String>(); test(sList); // Compile error }
Während String ein Untertyp von Object und Object ein Supertyp von Number ist, schlägt dieser Code immer noch fehl kompilieren. Der Grund dafür ist, dass der Platzhalter den spezifischen Typ Number (wie in List super Number> definiert) und seine Supertypen erfasst, was String ausschließt.
Warum erlaubt Java super T> Aber nicht
Der Grund, warum Java keine Platzhalter mit niedrigerer Grenze zulässt (z. B. ), liegt im Typsystem von Java. Platzhalter mit niedrigeren Grenzen würden die Erstellung von Sammlungen ermöglichen, die jeden Supertyp eines bestimmten Typs enthalten könnten, was möglicherweise zu unsicherer Umwandlung und Typverletzungen führen könnte.
Zusammenfassend lässt sich sagen, dass das Schlüsselwort super in Java-Generika die Erstellung von Generic ermöglicht Sammlungen, die Objekte eines bestimmten Typs oder seiner Supertypen enthalten können. Es ist wichtig, die Typsicherheitseinschränkungen im Zusammenhang mit begrenzten Platzhaltern zu verstehen, um die Gültigkeit und Korrektheit Ihres Java-Codes sicherzustellen.
Das obige ist der detaillierte Inhalt vonWie funktioniert das Schlüsselwort „super' von Java Generics mit begrenzten Platzhaltern und welche Einschränkungen hat es?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!