Ich habe Probleme, in dem folgenden Artikel zu verstehen: http://www.ibm.com/developerworks/java/library/j-jtp01255.htmlJava Generics Kovarianz
Under,
Generics nicht
Der Autor stellt fest,
Weil kovariant sind ln ist eine Liste und fügt einehinzu 210 Float dazu scheint völlig legal. Aber wenn ln mit li aliased wurde, dann es würde bricht die Typsicherheit verspricht implizit in der Definition von li - , dass es sich um eine Liste von ganzen Zahlen ist, die Deshalb generische Typen nicht covariant sein können.
Ich kann den Teil nicht verstehen, wo es "wenn ln aliased mit li" heißt. Was bedeutet der Autor mit Alias? (Referenz?). Das Code-Snippet über der zitierten Zeile scheint zu verdeutlichen, WAS in Java illegal ist und nicht in WHY. Es wäre sehr hilfreich für mich, wenn jemand mit einem Beispiel erklären könnte. Vielen Dank im Voraus.
IIRC, generische Typen sind nicht covariant, weil sie nicht, wie Arrays wurden ändern könnte in früheren Versionen von Java (Abwärtskompatibilität) implementiert/verwendet, ist es eine Glocke läuten jemand? – Rhangaun
@Skeptic, Arrays sind ein Beispiel dafür, wie eine kovariante Generika-Implementierung aussehen könnte - sie würde Laufzeitausnahmen auslösen. Java kann das nicht tun, da die Generika zur Laufzeit gelöscht werden, so dass sie nur über die begrenzende Kovarianz gesteuert werden können. – Yishai
@ Yishai, dieses Problem mit Arrays wurde von Steele in einer Präsentation namens "Growing a Language" diskutiert, die ich gerade nicht zu finden scheint. – Rhangaun