如何将无类型的java.util.List转换为Scala 2.8缓冲区

时间:2011-01-07 17:40:20

标签: scala scala-2.8 scala-collections

我必须调用一些返回无类型java.util.List的Java库代码,我似乎无法将其转换为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 个答案:

答案 0 :(得分:6)

我认为你只需将其转换为正确的类型。

val modules: Buffer[AnyRef] = 
  feedEntry.getModules.asInstanceOf[java.util.List[AnyRef]]

Scala可以从那里获取它并应用JavaConversions的隐式转换将其包装为Scala集合。