如何从Java List获取Scala List?编辑:请注意,自2.12.0以来,这已被弃用。请改用。(@Yaroslav评论)JavaConverters

2022-08-31 08:01:42

我有一个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。如何在上述上下文中执行此操作?


答案 1

编辑:请注意,自2.12.0以来,这已被弃用。请改用。(@Yaroslav评论)JavaConverters

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._


答案 2

有一个方便的Scala对象就是为了这个 - scala.collection.JavaConverters

您可以执行导入,然后按如下方式操作:asScala

import scala.collection.JavaConverters._

val lst = node.getByXPath(xpath).asScala
lst.foreach{ node =>   .... }

这应该给你 Scala 的表示,让你完成 。Bufferforeach


推荐