在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