Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/353.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/scala/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java LinkedHashMap到scala映射的转换和递归转换_Java_Scala - Fatal编程技术网

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。