2

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

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 不可变映射?

4

2 回答 2

3
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);
于 2013-04-23T14:41:24.567 回答
1

您只是缺少 JavaConversions 导入。您的代码将编译为:

import scala.collection.JavaConversions._
class ProcessData(var distanceMap : java.util.Map[java.lang.String , java.util.List[TestObject]]) {
    def apply = {
      val m2: Map[String, Any] = distanceMap.toMap
    }
}
于 2013-04-24T14:23:30.980 回答