我有一个返回List的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 . 如何在上述背景下做到这一点?
5 回答
我一直在寻找用Java编写的答案,但令人惊讶的是在这里找不到任何干净的解决方案 . 过了一段时间我才弄明白所以我决定在这里添加它以防万一其他人正在寻找Java实现(我想它也适用于Scala?):
如果必须将Java
List<ClassA>
转换为ScalaList[ClassB]
,则必须执行以下操作:1)添加
2)使用方法
asScala
,toList
然后map
3)将以下内容添加到接收
ClassA
作为参数的ClassB
构造函数中:自 Scala 2.8 以来,此转换现已内置于语言中,使用:
作品 .
asScala
没用由于scala 2.8.1使用
JavaConverters._
来使用asScala和asJava方法转换scala和Java集合 .import scala.collection.JavaConverters._
javalist.asScala
scalaSeq.asJava
请参阅转换关系scala doc site
有一个方便的Scala对象只是为了这个 - scala.collection.JavaConverters
你可以按照以下方式进行导入和
asScala
:这应该给你Scala的
Buffer
表示允许你完成foreach
.