我是Scala的新手。我在此編譯錯誤困惑:Scala:mutable.Map [Any,Any]不能應用於mutable.Map [String,Int]
我創建這個HashMap
並使用它的一些功能:
val valuesMap:mutable.Map[String,Int]=mutable.HashMap()
我有這個簽名的函數:
def saveToPjCsv(map:mutable.Map[Any,Any], fileName: String, outputDir: String): Unit =
我通過HashMap
的功能:
DataFrameUtils.saveToPjCsv(valuesMap,"categoryMap",".\\DataManipulation\\")
並獲得日編譯錯誤:
error: overloaded method value saveToPjCsv with alternatives: [INFO]
(map: scala.collection.mutable.Map[Any,Any],fileName: String,outputDir: String)Unit [INFO] (df: org.apache.spark.sql.DataFrame,fileName: String,outputDir: String)Unit [INFO] cannot be applied to (scala.collection.mutable.Map[String,Int], String, String)
爲什麼Map[Any,Any]
接受Map[String,Int]
?
明白了!澄清一下,你的答案是否適用於所有不可變的集合? – Jake
每個不可變集合定義其類型的方差,檢查定義如果類型是+ T意味着協方差-T逆變且只是T不變 – Mikel