Cac*_*nta 29 java scala type-conversion scala-java-interop
我从Java调用Scala方法.我需要进行从Seq到List的转换.
我无法修改Scala方法的签名,所以我无法使用该asJavaCollection方法scala.collection.JavaConversions._
有关如何实现这一目标的任何想法?
使用Scala 2.9.3
Chr*_*tin 43
您正在使用正确的轨道JavaConversions,但此特定转换所需的方法是seqAsJavaList:
java.util.List<String> convert(scala.collection.Seq<String> seq) {
return scala.collection.JavaConversions.seqAsJavaList(seq);
}
Run Code Online (Sandbox Code Playgroud)
从Scala 2.9开始,您不应该使用implicits,JavaConversions因为它们已被弃用,很快就会被删除.相反,要像这样转换Seq成java List使用convert包(虽然它看起来不太好):
import scala.collection.convert.WrapAsJava$;
public class Test {
java.util.List<String> convert(scala.collection.Seq<String> seq) {
return WrapAsJava$.MODULE$.seqAsJavaList(seq);
}
}
Run Code Online (Sandbox Code Playgroud)
从2.12开始,这是推荐的方式:
public static <T> java.util.List<T> convert(scala.collection.Seq<T> seq) {
return scala.collection.JavaConverters.seqAsJavaList(seq);
}
Run Code Online (Sandbox Code Playgroud)
所有其他方法a @deprecated("use JavaConverters or consider ToJavaImplicits", since="2.12.0")