我正在从 Java 调用 Scala 方法。我需要进行从 Seq 到 List 的转换。
我不能修改 Scala 方法的签名,所以我不能使用asJavaCollection
来自的方法scala.collection.JavaConversions._
关于如何实现这一目标的任何想法?
使用 Scala 2.9.3
我正在从 Java 调用 Scala 方法。我需要进行从 Seq 到 List 的转换。
我不能修改 Scala 方法的签名,所以我不能使用asJavaCollection
来自的方法scala.collection.JavaConversions._
关于如何实现这一目标的任何想法?
使用 Scala 2.9.3
您正在使用正确的轨道JavaConversions
,但是您需要进行此特定转换的方法是seqAsJavaList
:
java.util.List<String> convert(scala.collection.Seq<String> seq) {
return scala.collection.JavaConversions.seqAsJavaList(seq);
}
更新:JavaConversions
已弃用,但可以在 中找到相同的功能JavaConverters
。
java.util.List<String> convert(scala.collection.Seq<String> seq) {
return scala.collection.JavaConverters.seqAsJavaList(seq);
}
从 Scala 2.9 开始,您不应该使用隐含,JavaConversions
因为它们已被弃用并且很快将被删除。相反,要转换Seq
成 javaList
使用convert
这样的包(虽然它看起来不太好):
import scala.collection.convert.WrapAsJava$;
public class Test {
java.util.List<String> convert(scala.collection.Seq<String> seq) {
return WrapAsJava$.MODULE$.seqAsJavaList(seq);
}
}
从 2.12 开始,这是推荐的方式:
public static <T> java.util.List<T> convert(scala.collection.Seq<T> 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<String> = s.asJava