一尘不染

如何从Java列表获取Scala列表?

java

我有一个Java API,它返回的列表如下:

public List<?> getByXPath(String xpathExpr)

我正在使用以下scala代码:

val lst = node.getByXPath(xpath)

现在,如果我尝试使用scala语法糖,例如:

lst.foreach{ node => ... }

这是行不通的。我得到错误:

value foreach is not a member of java.util.List[?0]

看来我需要将Java列表转换为Scala列表。在上述情况下该怎么做?


阅读 202

收藏
2020-12-03

共1个答案

一尘不染

编辑:请注意,自2.12.0开始不推荐使用。使用JavaConverters代替。(@Yaroslav发表评论)

Scala 2.8开始, 此转换现在已使用以下语言构建:

import scala.collection.JavaConversions._

...

lst.toList.foreach{ node =>   .... }

作品。asScala不工作

在2.12.x中使用 import scala.collection.JavaConverters._

在2.13.x中使用 import scala.jdk.CollectionConverters._

2020-12-03