Varianz bei Vererbung

Ein wichtiger Unterschied zwischen den Generics in Java und Scala besteht in der Art und Weise, wie sich die Varianz auf die Vererbung auswirkt. Wenn beispielsweise eine Methode ein Argument vom Typ List[AnyRef] hat, können Sie dann einen Wert des Typs List[String] übergeben? Mit anderen Worten: Soll ein List[String] als ein Subtyp von List[AnyRef] betrachtet werden? Wenn ja, wird diese Art der Varianz als Kovarianz bezeichnet, denn die Supertyp-Subtyp-Beziehung des Containers (dem parametrisierten Typ) »weist in dieselbe Richtung« wie die Beziehung zwischen den Typparametern. In anderen Situationen, die wir gleich beschreiben werden, kann aber auch ein kontravariantes oder invariantes Verhalten sinnvoll sein.

In Scala ...

Get Programmieren mit Scala now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.