java - 如何从可变 Java 映射构建 Scala 不可变映射?

标签 java scala scala-java-interop

下面的类会导致编译器错误:

value toMap is not a member of 
 java.util.Map[java.lang.String,java.util.List[com.recommendations.TestObject]]


class ProcessData(var distanceMap : java.util.Map[java.lang.String , java.util.List[TestObject]]) {

    def apply = {

      val m2: Map[String, Any] = distanceMap.toMap

    }

}

此行导致错误:

val m2: Map[String, Any] = distanceMap.toMap

错误是因为 Map distanceMap 的值是可变的 java.util.List ,因此这些值也需要是不可变的吗?

如何从上面的可变 distanceMap 构建 Scala 不可变 map ?

最佳答案

import scala.collection.JavaConversions._

val m = new java.util.HashMap[String, Object]()
m.put("Foo", java.lang.Boolean.TRUE)
m.put("Bar", java.lang.Integer.valueOf(1))

val m2: Map[String, Any] = m.toMap
println(m2);

关于java - 如何从可变 Java 映射构建 Scala 不可变映射?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16172214/

相关文章:

java - 挑选和选择要激活的变量以及执行此操作的用户输入方法

parsing - 从使用 Scala Parser Combinators 编写的解析器返回有意义的错误消息

java - 在 Java 中使用不可变类的 Scala 扩展

Scala 搜索一个不起眼的 Main 类

java - 来自 Java 的 SSL 连接

java - 使用正则表达式从字符串中删除方括号?

scala - 是否有可能以及如何设置只能设置一次的 var?

scala - 为什么重载的 Scala 函数需要返回类型?

api - 请解释使用 Option 的 orNull 方法

java - 启动 Glassfish 时出错 (errno = 22)