2011-01-07 17 views
7

Ich muss einen Java-Bibliothekscode aufrufen, der eine untypisierte java.util.List zurückgibt, und ich kann das nicht in eine Scala 2.8-Liste konvertieren der Compiler mit dem folgenden Fehler Borking:Wie man eine nicht typisierte java.util.List in einen Scala 2.8 Buffer konvertiert

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

ich habe versucht, sowohl die normale

import scala.collection.JavaConversions._ 

val modules: Buffer[AnyRef] = feedEntry.getModules 

als explizite

val modules: Buffer[AnyRef] = asScalaBuffer(feedEntry.getModules) 

Ich kenne den Typ der Elemente in der Liste, und ich habe versucht, dies als den Typ des Puffers zu setzen, aber ich bekomme immer den gleichen Fehler.

Ich habe mich umgesehen, aber die gesamte Dokumentation geht davon aus, dass die Java-Liste getippt wird. Wie konvertiere ich nicht typisierte Listen?

Antwort

6

Ich denke, Sie müssen es nur auf den richtigen Typ zu werfen.

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

Scala es von dort und die implizite Konvertierung von JavaConversions gelten sie als Scala Sammlung zu wickeln.

+0

Danke, das tat tatsächlich den Trick –

+2

Und Casting auf den Typ der tatsächlichen Elemente in der Liste funktioniert auch ohne ein Problem. –

+0

@Age, ja, tut es. Ich habe einfach angenommen, dass du, als du versucht hast, "AnyRef" zu spielen, das wirklich wolltest. (Zum Beispiel, wenn Sie mit JDOM gearbeitet haben.) –