Im Lesen dieser Seite http://www.scala-lang.org/node/137, verstehe ich, was Kovarianz ist und die untere Grenze als gut, aber was nicht klar ist, ist diese Zeile:Scala untere Typ Grenzen und Kovarianz
Leider ist dieses Programm nicht kompilieren, weil Eine Kovarianz Annotation ist nur möglich, wenn die Typvariable nur in kovarianten Positionen verwendet wird. Da die Typvariable T als Parametertyp der Methode prepend erscheint, ist diese Regel gebrochen.
warum elem
eine Instanz eines übergeordneten Typ von T
sein muss, wenn ListNode
bereits covariant Deshalb elem
nicht auf die aktuelle Liste vorangestellt werden kann.
Die Erklärung ist ziemlich einfach. Die Typvariable T erscheint als Parametertyp. Dies ist keine kovariante Position. Was genau stellt hier ein Problem dar? –