Scalaの共分散と反分散を把握しようとしています。このようなクラスのセットがあります Message1 と Message2 は Message のサブタイプです
sealed trait Parser[T <: Message]{
//... blah blah
}
class Parser1 extends Parser[Message1]{
}
class Parser2 extends Parser[Message2]{
}
これで、不変のマップにマッピングを格納する別のモジュール (ファクトリ) ができました。
var myMap = Map[String,Parser[Message]()
myMap += Map("Message1" -> new Parser1)
myMap += Map("Message2"-> new Parser2)
今、これはコンパイルされません。私は何が欠けていますか?
これは私が得るコンパイルエラーです
[error] found : scala.collection.immutable.Map[java.lang.String,s.p.h.m.Parser1]
[error] required: (String, s.p.h.m.Parser[c.s.m.Message])
[error] myMap += Map("Message1" -> new Parser1)