【发布时间】:2011-09-27 06:46:10
【问题描述】:
我有这样的代码:
val dm = List[String]()
val dk = List[Map[String,Object]]()
.....
dm.add("text")
dk.add(Map("1" -> "ok"))
但它会抛出运行时 java.lang.UnsupportedOperationException。
我需要声明空列表或空地图,并且在代码后面的一些地方需要填充它们。
【问题讨论】:
-
是什么让你认为
List上存在add操作? -
如果你想使用add操作,你必须声明一个ArrayList。 scala 中的 Vals 本质上是不可变的,所以你不能添加它们。
-
iirc val 更像是 final,如果你使用可变集合,你可以添加到它们。例如scala-lang.org/api/current/scala/collection/mutable/…
-
@rjc 你用的是哪个版本的scala?我的(2.9.0)给了我一个编译错误。
-
你导入
scala.collection.JavaConversions了吗?如果你这样做了,你就会看到我推荐JavaConverters的原因:dm和dk正在被转换为 Java 集合,然后在该集合上调用add方法。更糟糕的是,dm和dk没有被修改,即使您没有收到错误。而且,顺便说一句,错误是1 -> "ok"是Map[Int,String],而不是Map[String, Object]。
标签: scala