Java-Generika und Kovarianz: Die Einschränkungen verstehen
Kovarianz in Generika bezieht sich auf die Fähigkeit eines Subtyps, seinen Supertyp zu ersetzen, ohne ihn zu verletzen Typensicherheit. In Java sind Generika jedoch nicht kovariant, was bedeutet, dass Subtypen nicht Supertypvariablen zugewiesen werden können.
Um dieses Konzept zu veranschaulichen, betrachten Sie den folgenden Codeausschnitt:
List<Integer> li = new ArrayList<Integer>(); List<Number> ln = li; // illegal ln.add(new Float(3.1415));
Hier ist ln Alias mit li, was bedeutet, dass ln auf dieselbe Liste wie li verweist. Allerdings wird ln als List
Wenn Kovarianz zulässig wäre, wäre der obige Code zulässig, würde jedoch die Typsicherheit verletzen. Durch Zuweisen eines List
Um die Typsicherheit aufrechtzuerhalten, sind Java-Generika daher nicht kovariant. Diese Einschränkung stellt sicher, dass Untertypen in generischen Kontexten nicht austauschbar mit Supertypen verwendet werden können, wodurch potenzielle Typfehler vermieden werden.
Das obige ist der detaillierte Inhalt vonWarum sind Java-Generika nicht kovariant?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!