将Scala Seq转换为Java List

3
我正在使用Java编程。我调用了一个返回Seq[String]的scala函数。为了将其转换为Java的List,我尝试使用scala.collection.JavaConverters中的asJava方法。但是这似乎不起作用。
类似问题的答案建议使用JavaConversions或WrapAsJava,但它们都已被弃用。
类似问题 - 将Scala seq<string>转换为Java List<string>
//someScalaFunc returns a Seq[String]
List<String> listA = someScalaFunc(); 
3个回答

10

由于JavaConversions已经被弃用,您可以使用JavaConverters来代替:

List<String> listA = scala.collection.JavaConverters.seqAsJavaList(someScalaFunc())

这个运行得很好,但我尝试静态导入它,但 someScalaFunc() 是通用函数。有没有一种以静态方式导入它并避免在函数调用中使用类名的方法? - piyush aggarwal
引入import static scala.collection.JavaConverters.seqAsJavaList并使用seqAsJavaList(someScalaFunc()),这样不就足够了吗? - chengpohi
不,它会给出以下错误信息 - seqAsJavaList (Seq<A>) 在 javaconverters 中无法应用于 Seq<java.lang.String>我已经确认泛型函数不能以静态方式导入,只能使用完整的类名或将它们的返回值存储在一个中间变量中。在这种情况下,中间变量无法用来存储 Scala 的 Seq。 - piyush aggarwal
@piyushaggarwal 尝试使用 JavaConverters.<String>seqAsJavaList(someScalaFunc()) - Sergey

2
你可以通过导入以下内容来使用Java转Scala的隐式转换器:

import scala.collection.JavaConversions._

0
import scala.collection.JavaConverters._

val scalaList = List("A", "B", "c")

scalaList.asJava

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接