はとMap[A, B]
で共変ではないため、明らかにこれを行うことはできません。これを試すだけで、詳細なコンパイル エラーが発生します。A
B
scala> class A(val m: Map[Any, Any])
defined class A
scala> class B(override val m: Map[String, String]) extends A(m)
<console>:8: error: type mismatch;
found : Map[String,String]
required: Map[Any,Any]
Note: String <: Any, but trait Map is invariant in type A.
You may wish to investigate a wildcard type such as `_ <: Any`. (SLS 3.2.10)
class B(override val m: Map[String, String]) extends A(m)
^
共変型で機能します。
scala> class C(val m: List[Any])
defined class C
scala> class D(override val m: List[String]) extends C(m)
defined class D