我试图掌握Scala中的协变和逆变。我有一组像这样的类 Message1 和 Message2 是 Message 的子类型
sealed trait Parser[T <: Message]{
//... blah blah
}
class Parser1 extends Parser[Message1]{
}
class Parser2 extends Parser[Message2]{
}
现在我有另一个模块(工厂),它将映射存储在不可变的 Map 中
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)