Kann dies getan werden?Karte von Foo [T] zu Bar [T]
case class Foo[T](value: T)
case class Bar[T](value: T)
val map = mutable.Map.empty[Foo[_], Bar[_]]
map(Foo(1)) = Bar(1) // correct
map(Foo(1)) = Bar(1.1) // should cause a compiler error
Es jede Art T
, so lange erlauben sollte, da beide Foo#T
und Bar#T
gleich sind.
A 'Map' allein wird nicht zulassen, dass die Einschränkung zu erzwingen, weil 'Map' nimmt zwei Typparameter, die völlig unabhängig sind. Sie könnten eine Wrapper-Klasse (um eine 'Map') definieren, die einen einzigen Typparameter (sowohl für die Schlüssel als auch für die Werte der zugrunde liegenden' Map') benötigt. – Jubobs
@Jubobs Es sieht so aus, als müsste ich das tun. Ich habe nur auf eine bessere Möglichkeit gehofft, dies zu tun, da ich eine Unterklasse von etwas rein für den Zweck von Typenzwängen machen werde. –