如何将未定义类型的java.util.List转换为Scala 2.8缓冲区(Buffer)

7

我需要调用一些Java库代码,它返回一个未类型化的java.util.List,但我无法将其转换为Scala 2.8列表,否则编译器会出现以下错误:

[INFO]  found   : java.util.List[?0] where type ?0
[INFO]  required: java.util.List[AnyRef]
[INFO]      val modules: Buffer[AnyRef] = asScalaBuffer(feedEntry.getModules)

我尝试过普通的方法

import scala.collection.JavaConversions._

val modules: Buffer[AnyRef] = feedEntry.getModules

作为显式的意思是指明确地表示或表达。
val modules: Buffer[AnyRef] = asScalaBuffer(feedEntry.getModules)

我知道列表中的项目类型,并尝试将其设置为缓冲区的类型,但我一直收到相同的错误。
我已经查看了周围的内容,但所有文档都假定Java列表是有类型的。 如何转换无类型列表?
1个回答

6
我认为你只需要将其转换为正确的类型。
val modules: Buffer[AnyRef] = 
  feedEntry.getModules.asInstanceOf[java.util.List[AnyRef]]

Scala可以接管并应用来自JavaConversions的隐式转换,将其包装为Scala集合。


2
将列表中实际项目的类型转换也可以毫无问题地进行。 - Age Mooij
@Age,是的,它确实可以。我只是假设你想要最终转换为 AnyRef,因为你试图这样转换。(例如,如果你正在使用 JDOM。) - Ken Bloom

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