如何使用/转换Map为scala Map [String,Any]?
在Scala中,Java对象被认为是AnyRef。
是否有一行代码的转换方式?我想避免迭代新创建的scala Map并复制引用。
提前致谢。
如何使用/转换Map为scala Map [String,Any]?
在Scala中,Java对象被认为是AnyRef。
是否有一行代码的转换方式?我想避免迭代新创建的scala Map并复制引用。
提前致谢。
val jmap = new HashMap[String, Object]
jmap.put("1", new Date)
import scala.collection.JavaConverters._
val smap = jmap.asScala.mapValues(_.asInstanceOf[Any]).toMap
test(smap)
def test(m: Map[String, Any]): Unit = {
println(m)
}
请注意,在Scala中,java.lang.Object
等同于AnyRef
,而不是Any
。
import scala.collection.JavaConversions._
val javaMap = new HashMap[String,Object]
val scalaMap: Map[String,Any] = javaMap.toMap
import scala.collection.JavaConverters._ // note, this is a different import
val javaMap = new HashMap[String, Object]
val scalaMap: Map[String, Any] = javaMap.asScala.toMap // this .asScala is what the other version does implicitly
import scala.collection.Map
import scala.collection.JavaConversions._
val javaMap = HashMap[String, Object]
val scalaMap: Map[String,Any] = javaMap // voila!
或者明确地
import scala.collection.Map
import scala.collection.JavaConverters._
val javaMap = HashMap[String, Object]
val scalaMap: Map[String, Any] = javaMap.asScala