对于scala来说这是全新的,因此可以提供任何帮助。我试图通过JVM将对象从python传递到scala,所以我需要一个函数,该函数将java映射作为输入并返回一个scala映射作为输出。
我还不确定我是否希望地图可变或不可变,但是我一直在尝试使用.asScala.toMap使其不可变,但这引发了错误。我认为问题出在我函数的语法上?
private object PythonUtils {
def toScalaMap[K, V](jm: java.util.Map[K, V]): Map[K, V] = {
jm.asScala
}
}
到目前为止,该函数对参数进行类型检查,然后获取Java映射并将其转换为scala。但是,当我对此进行编译时,出现type mismatch
错误found: scala.collection.mutable.Map[K,V] required java.util.Map[K,V]
,我们将不胜感激!
答案 0 :(得分:1)
尝试
import scala.collection.JavaConverters._
import scala.collection.mutable
def toScalaMutableMap[K, V](jm: java.util.Map[K, V]): mutable.Map[K, V] = {
jm.asScala
}
def toScalaImmutableMap[K, V](jm: java.util.Map[K, V]): Map[K, V] = {
jm.asScala.toMap
}
libraryDependencies += "org.scala-lang.modules" %% "scala-java8-compat" % "0.9.0"
Converting mutable to immutable map
但是,当我对此进行编译时,出现类型不匹配错误
found: scala.collection.mutable.Map[K,V] required java.util.Map[K,V]
看看哪一行会产生此错误。
也许您有import java.util.Map
。然后Map
指向java.util.Map
。如果您删除此导入,则Map
指的是scala.Predef.Map
,也就是scala.immutable.Map
。