Che ne dici di chiamare lo .toMap
su di esso?
import collection.JavaConversions._
val x = java.util.Collections.unmodifiableMap[Int,Int](new java.util.HashMap[Int,Int]())
val y: Map[Int,Int] = x.toMap //y: Map[Int,Int] = Map()
Senza rimettere toMap
, JavaConversions
permette solo di convertire implicitamente ad una Scala mappa mutevole:
scala> val z: collection.mutable.Map[Int,Int] = x
z: scala.collection.mutable.Map[Int,Int] = Map()
Presumibilmente questo è perché un Java Map
è mutevole, quindi dovrebbe essere rappresentata solo in Scala come mutable.Map
finché non lo si converte in modo esplicito in un immutable.Map
.
Nota che quando hai appena detto Map
a Scala, si sta davvero parlando collection.immutable.Map
dal Predef
alias Map
in questo modo:
scala> Map()
res0: scala.collection.immutable.Map[Nothing,Nothing] = Map()
Quindi, quando si dice request.getParameterMap.asInstanceOf[Map[String, Array[String]]]
, siete veramente chiedendo Scala per convertire implicitamente un Java Map
in Scala collection.immutable.Map
, che non vuole fare dal momento che Java Map
è modificabile.