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