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

Age*_*oij 7 scala scala-2.8 scala-collections

我必须调用一些返回无类型java.util.List的Java库代码,我似乎无法将其转换为Scala 2.8列表,而没有编译器borking,并出现以下错误:

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

我试过了正常的

import scala.collection.JavaConversions._

val modules: Buffer[AnyRef] = feedEntry.getModules
Run Code Online (Sandbox Code Playgroud)

作为明确的

val modules: Buffer[AnyRef] = asScalaBuffer(feedEntry.getModules)
Run Code Online (Sandbox Code Playgroud)

我知道列表中的项目类型,我已经尝试将其设置为缓冲区的类型,但我一直得到相同的错误.

我环顾四周,但所有文档都假定要输入Java列表.如何转换无类型列表?

Ken*_*oom 6

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

val modules: Buffer[AnyRef] = 
  feedEntry.getModules.asInstanceOf[java.util.List[AnyRef]]
Run Code Online (Sandbox Code Playgroud)

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

  • 并且转换为列表中实际项目的类型也没有问题. (2认同)