在Java代码中从scala.collection.Seq 转换为java.util.List

我从Java调用Scala方法。 我需要进行从Seq到List的转换。

我无法修改Scala方法的签名,因此我无法使用scala.collection.JavaConversions._asJavaCollection方法。

有关如何实现这一目标的任何想法?

使用Scala 2.9.3

您使用JavaConversions处于正确的轨道上,但此特定转换所需的方法是seqAsJavaList

 java.util.List convert(scala.collection.Seq seq) { return scala.collection.JavaConversions.seqAsJavaList(seq); } 

从Scala 2.9开始,您不应该使用JavaConversions implicits,因为它们已被弃用,很快就会被删除。 相反,要将Seq转换为java List使用这样的convert包(尽管它看起来不太好):

 import scala.collection.convert.WrapAsJava$; public class Test { java.util.List convert(scala.collection.Seq seq) { return WrapAsJava$.MODULE$.seqAsJavaList(seq); } } 

从2.12开始,这是推荐的方式:

 public static  java.util.List convert(scala.collection.Seq seq) { return scala.collection.JavaConverters.seqAsJavaList(seq); } 

所有其他方法@deprecated("use JavaConverters or consider ToJavaImplicits", since="2.12.0")

(如果您想在Scala代码中执行此转换)

您可以使用JavaConverters使这很容易。

 import collection.JavaConverters._ val s: Seq[String] = ... val list: java.util.List = s.asJava