0
我有一个代码段,其看起来如下:Scala子类无法识别父类中的通用映射?
abstract class MultipleOutputWriter {
protected def writers: collection.mutable.Map[Any, OutputStream]
def write(basePath: String, value: Any)
def close = writers.values.foreach(_.close)
}
class LocalMultipleOutputWriter extends MultipleOutputWriter {
protected val writers = collection.mutable.Map[String, FileOutputStream]()
def write(key: String, value: Any) = {
//some implementation
}
}
然而在编译时它会抛出父类和派生类writers
之间的类型不匹配。为什么会发生? scala编译器不检查映射参数是否是子类型?
我想我标志着它过早地纠正。我尝试了你所说的,它仍然给我以下内容:'类型=> scala.collection.mutable.Map [String,java.io.OutputStream];类的MultipleOutputWriter中的重写方法编写器。 值编写者具有不兼容的类型 protected val writers = collection.mutable.Map [String,FileOutputStream]()' – Sohaib
您可能还需要参数化V。更新 – Daenyth