¿Qué tal si llama al .toMap
en él?
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()
Sin poner toMap
, JavaConversions
sólo le permite convertir implícitamente a un mutable Scala mapa:
scala> val z: collection.mutable.Map[Int,Int] = x
z: scala.collection.mutable.Map[Int,Int] = Map()
Presumiblemente, esto es debido a que una de Java Map
es mutable, por lo que sólo deben estar representados en Scala como mutable.Map
hasta que lo convierta explícitamente en immutable.Map
.
Tenga en cuenta que cuando se acaba de decir Map
en Scala, que realmente está hablando collection.immutable.Map
desde Predef
alias Map
de esa manera:
scala> Map()
res0: scala.collection.immutable.Map[Nothing,Nothing] = Map()
Así, cuando decimos request.getParameterMap.asInstanceOf[Map[String, Array[String]]]
, que están realmente preguntando Scala para convertir implícitamente una aplicación Java Map
en el collection.immutable.Map
de Scala, que no quiere hacer ya que el Map
de Java es mutable.