如何将scala.collection.immutable.List [scala.collection.mutable.MutableList [String]]转换为java.util.List [java.util.List [String]]

mak*_*les 2 java scala list scala-java-interop

我有一个Scala方法在java类中使用抛出下面的错误.由于某种原因,隐式转换不起作用List,Lists但它确实适用于List.(为前:mutable.MutableListutil.List)

Error:(124, 143) type mismatch;
    found: scala.collection.immutable.List[scala.collection.mutable.MutableList[String]]
     required: java.util.List[java.util.List[String]]
Run Code Online (Sandbox Code Playgroud)

要么

Error:(124, 143) type mismatch;
    found: scala.collection.immutable.List[scala.collection.mutable.MutableList[String]]
     required: scala.collection.immutable.List[java.util.List[String]]
Run Code Online (Sandbox Code Playgroud)

Jea*_*ean 5

除非您明确转换内部列表,否则不会转换内部列表.

import scala.collection.JavaConverters._
import java.util.{List=>JavaList}
import scala.collection.immutable.{List => ScalaList}
import scala.collection.mutable.{MutableList => ScalaMutableList}

val a : ScalaList[ScalaMutableList[String]] = List(MutableList())
val b: ScalaList[JavaList[String]]= a.map(_.asJava)
val c: JavaList[JavaList[String]] = b.asJava
Run Code Online (Sandbox Code Playgroud)

我做了最后一次转换(c = b.asJava),我建议保留它,以便让代码更容易为未来的读者做好准备.

  • 不要忘记导入`scala.collection.JavaConverters._` (3认同)