作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试将参数映射从 ServletRequest 转换为 Scala 2.9.0.1 中的 Scala Map:
val params = request.getParameterMap.asInstanceOf[Map[String, Array[String]]]
java.lang.ClassCastException: java.util.Collections$UnmodifiableMap cannot be cast to scala.collection.immutable.Map
最佳答案
不如直接调用.toMap
在上面?
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()
toMap
,
JavaConversions
只允许您隐式转换为可变的 Scala 映射:
scala> val z: collection.mutable.Map[Int,Int] = x
z: scala.collection.mutable.Map[Int,Int] = Map()
Map
是可变的,所以它只能在 Scala 中表示为
mutable.Map
直到您将其显式转换为
immutable.Map
.
Map
在 Scala 中,你真的在谈论
collection.immutable.Map
自从
Predef
别名
Map
那样:
scala> Map()
res0: scala.collection.immutable.Map[Nothing,Nothing] = Map()
request.getParameterMap.asInstanceOf[Map[String, Array[String]]]
,您确实是在要求 Scala 隐式转换 Java
Map
进入 Scala 的
collection.immutable.Map
, 自 Java 的
Map
以来它不想这样做是可变的。
关于scala - 如何将 java.util.Collections.unmodifiableMap 转换为不可变的 Scala Map?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10046889/
COW 不是奶牛,是 Copy-On-Write 的缩写,这是一种是复制但也不完全是复制的技术。 一般来说复制就是创建出完全相同的两份,两份是独立的: 但是,有的时候复制这件事没多大必要
我是一名优秀的程序员,十分优秀!