java map 转换 scala_如何从java.util.Map转换为Scala Map

Java API返回一个java.util.Map< java.lang.String,java.lang.Boolean&gt ;;.我想把它放到一个Map [String,Boolean] 所以想象我们有:

var scalaMap : Map[String,Boolean] = Map.empty

val javaMap = new JavaClass().map() // Returns java.util.Map

由于该方法不了解Java Map,因此无法使用MapMap API.我试过了:

scalaMap = Map.empty ++ new collection.jcl.MapWrapper[String,Boolean] {

override def underlying = javaMap

}

和:

scalaMap = Map.empty ++ new collection.jcl.MapWrapper[java.lang.String,java.lang.Boolean] {

override def underlying = javaMap

}

这些都无法编译,因为泛型 – java.lang.String与scala String不同.

有没有一个很好的方式做这个,手动复制地图

编辑:谢谢,所有好的答案,我从所有的学到了很多.但是,我发现一个比我实际拥有的更简单的问题,我犯了一个错误.所以,如果你允许我,我将泛化这个问题 – API实际返回的是什么

java.util.Map>

我需要把它移动到Map [String,Map [SomeJavaEnum,String]]

它可能似乎并不太复杂,但它增加了一个额外的类型擦除,我发现将其移动到Scala地图的唯一方法是深入复制(使用您以下建议的一些技术) .有任何提示吗?我通过为我的确切类型定义隐式转换来解决我的问题,所以至少丑陋隐藏在自己的特质中,但仍然觉得有点笨拙的深层复制.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值