Java LinkedHashMap到scala映射的转换和递归转换
如果Java LinkedHashMap到scala映射的转换和递归转换,java,scala,Java,Scala,如果mapascalamap是一个隐式函数,那么为什么我们必须显式地使用它?为什么递归转换没有发生 import scala.collection.JavaConversions._ val javaObj = yamlObj.asInstanceOf[java.util.LinkedHashMap[String, java.util.LinkedHashMap[String, String]]] val map: collection.mutable.Map[String, collec
mapascalamap
是一个隐式函数,那么为什么我们必须显式地使用它?为什么递归转换没有发生
import scala.collection.JavaConversions._
val javaObj = yamlObj.asInstanceOf[java.util.LinkedHashMap[String, java.util.LinkedHashMap[String, String]]]
val map: collection.mutable.Map[String, collection.mutable.Map[String, String]] = javaObj << type mismatch
导入scala.collection.JavaConversions.\u
val javaObj=yamlObj.asInstanceOf[java.util.LinkedHashMap[String,java.util.LinkedHashMap[String,String]]
val-map:collection.mutable.map[String,collection.mutable.map[String,String]]=javaObj隐式转换不会在参数化类型的参数“内部”发生,也不会递归发生
您可以使用以下方式转换值:
val map: collection.Map[String, collection.mutable.Map[String, String]] = javaObj.mapValues(x => x: collection.mutable.Map[String, String])
(请注意,map
不提供可变接口-它是原始映射上的一个视图,但无法修改,因为scala不知道如何反向运行转换)。隐式转换不会在参数化类型的参数“内部”发生,也不会递归发生
您可以使用以下方式转换值:
val map: collection.Map[String, collection.mutable.Map[String, String]] = javaObj.mapValues(x => x: collection.mutable.Map[String, String])
(请注意,map
不提供可变接口-它是原始映射上的视图,但无法修改,因为scala不知道如何反向运行转换).Scala的java转换不适用于嵌套转换,但可以使用JavaConverters为其进行显式转换,如所示,不是按照您希望的方向,而是可以调整为将嵌套java映射转换为Scala。Scala的java转换不适用于嵌套转换,但可以使用如中所示的JavaConverters不是您想要的方向,而是可以调整为将嵌套java映射转换为scala。