[英]Convert from scala.collection.Seq<String> to java.util.List<String> in Java code
I'm calling a Scala method, from Java. 我从Java调用Scala方法。 And I need to make the conversion from Seq to List.
我需要进行从Seq到List的转换。
I can't modified the signature of the Scala method, so I can't used the asJavaCollection
method from scala.collection.JavaConversions._
我无法修改Scala方法的签名,因此我无法使用
scala.collection.JavaConversions._
的asJavaCollection
方法。
Any ideas of how can I achieve this? 有关如何实现这一目标的任何想法?
Using Scala 2.9.3 使用Scala 2.9.3
You're on the right track using JavaConversions
, but the method you need for this particular conversion is seqAsJavaList
: 您使用
JavaConversions
处于正确的轨道上,但此特定转换所需的方法是seqAsJavaList
:
java.util.List<String> convert(scala.collection.Seq<String> seq) {
return scala.collection.JavaConversions.seqAsJavaList(seq);
}
Update : JavaConversions
is deprecated, but the same function can be found in JavaConverters
. 更新 :不推荐使用
JavaConversions
,但可以在JavaConverters
找到相同的函数。
java.util.List<String> convert(scala.collection.Seq<String> seq) {
return scala.collection.JavaConverters.seqAsJavaList(seq);
}
Since Scala 2.9, you shouldn't use implicits from JavaConversions
since they are deprecated and will soon be removed. 从Scala 2.9开始,您不应该使用
JavaConversions
implicits,因为它们已被弃用,很快就会被删除。 Instead, to convert Seq
into java List
use convert
package like this (although it doesn't look very nice): 相反,要将
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);
}
}
Since 2.12 this is the recommended way: 从2.12开始,这是推荐的方式:
public static <T> java.util.List<T> convert(scala.collection.Seq<T> seq) {
return scala.collection.JavaConverters.seqAsJavaList(seq);
}
All other methods a @deprecated("use JavaConverters or consider ToJavaImplicits", since="2.12.0")
所有其他方法
@deprecated("use JavaConverters or consider ToJavaImplicits", since="2.12.0")
(In case you want to do this conversion in Scala code) (如果您想在Scala代码中执行此转换)
You can use JavaConverters to make this really easy. 您可以使用JavaConverters使这很容易。
import collection.JavaConverters._
val s: Seq[String] = ...
val list: java.util.List<String> = s.asJava
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.