将java映射转换为scala映射的函数

将java映射转换为scala映射的函数,java,scala,type-conversion,maps,scala-java-interop,Java,Scala,Type Conversion,Maps,Scala Java Interop,对scala来说是全新的,因此非常感谢您的帮助。我试图通过JVM将对象从python传递到scala,因此我需要一个函数,该函数将java映射作为输入,并返回scala映射作为输出 我还不确定我是否希望映射是可变的还是不可变的,但我已经尝试使用.asScala.toMap使其不可变,但这引发了一个错误。我认为问题在于我函数的语法 私有对象蟒蛇{ def-toScalaMap[K,V](jm:java.util.Map[K,V]):Map[K,V]={ jm.asScala } } 根据我到目

对scala来说是全新的,因此非常感谢您的帮助。我试图通过JVM将对象从python传递到scala,因此我需要一个函数,该函数将java映射作为输入,并返回scala映射作为输出

我还不确定我是否希望映射是可变的还是不可变的,但我已经尝试使用.asScala.toMap使其不可变,但这引发了一个错误。我认为问题在于我函数的语法


私有对象蟒蛇{
def-toScalaMap[K,V](jm:java.util.Map[K,V]):Map[K,V]={
jm.asScala
}
}
根据我到目前为止得到的信息,该函数对参数进行类型检查,然后获取java映射并将其转换为scala。然而,当我编译这篇文章时,我发现了一个
类型不匹配
错误
发现:scala.collection.mutable.Map[K,V]必需的java.util.Map[K,V]
非常感谢您的帮助

试试看

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”

然而,当我编译这个文件时,发现了一个类型不匹配的错误:scala.collection.mutable.Map[K,V]required java.util.Map[K,V]

看哪一行产生了这个错误

也许您已经导入了
java.util.Map
。然后
Map
引用
java.util.Map
。如果删除此导入,则
Map
将引用
scala.Predef.Map
aka
scala.immutable.Map