Einführung:
Das Schlüsselwort „Super“ in Java-Generika verstehen kann eine verwirrende Aufgabe sein. Dieser Artikel soll Licht in dieses Konzept bringen, indem er seine Nuancen anhand spezifischer Beispiele untersucht und häufige Missverständnisse anspricht.
Begrenzte Generika mit dem Schlüsselwort „Super“:
Der begrenzte Platzhalter Liste Supernummer> ermöglicht die Erfassung von Number und seinen Supertypen. Es ist jedoch wichtig zu beachten, dass dies nicht bedeutet, dass Sie dieser Liste einen beliebigen Zahlen-Supertyp hinzufügen können.
Unerwartetes Verhalten von Objekt vs. Ganzzahl:
Im Sie haben beispielsweise erwähnt, dass Integer(0) zu List< hinzugefügt werden kann. super Number>, während Object() dies nicht kann. Dieses Verhalten ergibt sich aus den Erfassungskonvertierungsregeln für begrenzte Platzhalter. Liste Supernummer> kann nur Number, Object und Serializable erfassen, wobei Number der niedrigste Supertyp ist.
Warum String zur Liste hinzufügen Supernummer> Kompiliert nicht:
Obwohl String Object, eine Oberklasse von Number, erweitert, fügt String zu List< hinzu? Supernummer> lässt sich nicht kompilieren. Dies liegt daran, dass begrenzte Platzhalter den Producer-Extends-Consumer-Super-Richtlinien (PECS) folgen. Liste Supernummer> ist ein Konsument von Number, daher kann sein Argumenttyp kein Produzent von String sein.
Warum ist In Java Generics erlaubt?
Das Fehlen von Konstrukte in Java-Generika ergeben sich aus der Tatsache, dass sie keinen Sinn ergeben. Wenn ein generischer Typ jeden Supertyp seiner Grenze akzeptieren kann, ist kein spezifischer Typparameter erforderlich.
Fazit:
Das Schlüsselwort „super“ in Java-Generika verstehen erfordert eine sorgfältige Abwägung seiner Auswirkungen und die Einhaltung der PECS-Richtlinien. Wenn Sie diese Konzepte verstehen, können Sie begrenzte Platzhalter effektiv nutzen, um die Flexibilität Ihrer APIs zu erhöhen.
Das obige ist der detaillierte Inhalt vonJava Generics: Wie funktioniert das Schlüsselwort „super' wirklich mit begrenzten Platzhaltern?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!