gpt4 book ai didi

Java LinkedHashMap 到 scala Map 转换及递归转换

转载 作者:太空宇宙 更新时间:2023-11-04 13:41:00 24 4
gpt4 key购买 nike

如果mapAsScalaMap是一个隐式函数那么为什么我们必须显式地使用它呢?为什么递归转换没有发生?

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

上面的内容不是应该有效吗,因为我导入了所有隐式 Java 转换?

如果我使用 mapAsScalaMap(javaObj) 那么它可以工作,但它不会将嵌套的 LinkedHashMap 转换为 Scala 映射。

最佳答案

隐式转换不会发生在参数化类型的参数“内部”,也不会递归发生。

您可以使用如下方式转换值:

val map: collection.Map[String, collection.mutable.Map[String, String]] = javaObj.mapValues(x => x: collection.mutable.Map[String, String])

(请注意,map 不提供可变接口(interface) - 它是原始 map 上的 View ,但无法修改,因为 scala 不知道如何反向运行转换)。

关于Java LinkedHashMap 到 scala Map 转换及递归转换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31256020/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com