2015-01-05 33 views

回答

3

可能是這樣的:

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) 
    } 

另外要注意,java.lang.Object相當於AnyRef在Scala中,不Any

3

這應該工作:

import scala.collection.JavaConversions._ 
val javaMap = new HashMap[String,Object] 
val scalaMap: Map[String,Any] = javaMap.toMap 

或者,如果你不喜歡 「的implicits神奇的」,這樣做:

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 

還要注意,到底是toMap因爲javaMap.asScala返回mutable.MapMap[String,Any]默認默認爲immutable.Map。 如果使用scala.collection.Map相反,你不需要它:

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 
相關問題