Как преобразовать нетипизированный java.util.List в буфер Scala 2.8 - PullRequest
7 голосов
/ 07 января 2011

Мне нужно вызвать код библиотеки 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 голосов
/ 07 января 2011

Думаю, вам просто нужно привести его к нужному типу.

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

Scala может взять его оттуда и применить неявное преобразование из JavaConversions, чтобы обернуть его в коллекцию Scala.

...