Ich möchte eine kovariante Klasse erstellen, die änderbar ist, also muss ich einen niedrigeren Typ hinzufügen, der an die Setter-Methode gebunden ist. Aber ich möchte auch die Setter-Methode, um ein Feld zu setzen, also denke ich, das Feld muss den gleichen Typ gebunden haben?
%Vor%Die Methode kompiliert fein. Aber das Feld secondValue kompiliert überhaupt nicht mit der Fehlermeldung:
%Vor%Was muss ich tun?
Sie benötigen das Konstrukt forSome
, das G
als existentiellen Typ einführt:
In Ihrem ursprünglichen Code für secondValue
wurde G
aus dem Nichts entfernt, d. h. es wurde nicht richtig eingeführt. Im Fall von setSecondValue
bindet der Benutzer (oder der Compiler) G
an der Aufrufseite, aber für ein Feld, das keine Option ist (insbesondere, da Ihre Datei privat ist). Lesen Sie mehr über forSome
und existenzielle Typen in Scala hier , hier oder
Malte Schwerhoff
08.08.2012, 06:42
Tags und Links scala covariance