我在 Scala 和 Java 之间遇到编译问题。
我的 Java 代码需要一个
java.util.Map<Double, java.lang.Iterable<Foo>>
我的scala代码有一个
Map[Double, Vector[Foo]]
我得到编译错误:
error: type mismatch;
found : scala.collection.immutable.Map[scala.Double,Vector[Foo]
required: java.util.Map[java.lang.Double,java.lang.Iterable[Foo]]
似乎 scala.collection.JavaConversions 不适用于嵌套集合,即使 Vector 可以隐式转换为 Iterable。除了遍历 Scala 集合并手动进行转换之外,我还能做些什么来使这些类型起作用?
最佳答案
scala.collection.JavaConversions
应该被弃用恕我直言。您最好使用 scala.collection.JavaConverters
明确说明转换发生的时间和地点。在你的情况下:
import scala.collection.JavaConverters._
type Foo = Int // Just to make it compile
val scalaMap = Map(1.0 -> Vector(1, 2)) // As an example
val javaMap = scalaMap.map {
case (d, v) => d -> v.toIterable.asJava
}.asJava
关于java - 如何将嵌套的 Scala 集合转换为嵌套的 Java 集合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13981983/