dee*_*imo 5 scala scala-collections
import scala.collection.JavaConversions._
val m = new java.util.LinkedHashMap[String,Int]
val s: scala.collection.mutable.Map[String,Int] = m.asInstanceOf[scala.collection.mutable.Map[String,Int]]
Run Code Online (Sandbox Code Playgroud)
返回以下错误
java.lang.ClassCastException:java.util.LinkedHashMap无法强制转换为scala.collection.mutable.Map
这里有什么问题以及如何进行这种投射?我也试过scala.collection.JavaConverters._得到同样的错误.
导入JavaConversions的东西并不会使java的集合类型成为scala集合类型的实例,它在两个不同的集合层次结构之间提供了方便的转换方法.在这种情况下,根据您的问题中的导入,您可以使用以下行从Java LinkedHashMap获取可变的scala Map:
val s = mapAsScalaMap(m)
Run Code Online (Sandbox Code Playgroud)
不要强制转换,只需使用隐式转换:
val s: scala.collection.mutable.Map[String,Int] = m
Run Code Online (Sandbox Code Playgroud)
编辑:一些(或大多数)偏好转换器,因为它们是显式的:
scala> val m = new java.util.LinkedHashMap[String,Int]
m: java.util.LinkedHashMap[String,Int] = {}
scala> m.put("one",1)
res0: Int = 0
scala> import scala.collection.JavaConverters._
import scala.collection.JavaConverters._
scala> val s = m.asScala
s: scala.collection.mutable.Map[String,Int] = Map(one -> 1)
Run Code Online (Sandbox Code Playgroud)
阅读最新文档.