java - 如何从 Java 列表中获取 Scala 列表?

标签 java scala

我有一个 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 List 转换为 Scala List。如何在上述情况下做到这一点?

最佳答案

编辑:请注意,自 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._

关于java - 如何从 Java 列表中获取 Scala 列表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6356465/

相关文章:

Scala for comprehension - yield w/a complex filter

java - PanelImagen[,0,0,0x0,无效,layout=java.awt.BorderLayout,alignmentX=0.0,alignmentY=0.0,border=,flags=9,maximumSize=,minimumSize=,preferredSize=]

java - Linux 上的 Protocol Buffer 符号查找错误

java - Java中有 "smart pointers"吗?

Scala 递归 API 调用以获取所有结果

scala - 如何处理spark sql中缺失的列

java - "delay"在使用 sun HttpServer 时传递 WebService 回复

java - FXML 布局的可重用常量?

scala - 为什么编译器会错误地推断函数中 Future.sequence 声明的返回类型?

基于第一个 future 结果的Scala future 返回