Frage

Ich versuche, eine JDO mit Google App Engine und Scala zu verwenden. Die api für die Rückkehr Object execute (aber es ist wirklich eine Java-Sammlung) und ich möchte es in eine scala Liste, um über sie zu wiederholen.

Mein Code sieht wie folgt aus so weit:

val pm = PMF.factory.getPersistenceManager
val query = "select from User " 
val gamelist:List[User] = List(pm.newQuery(query).execute.toArray:_ *)

Der Compiler-Fehler an diesem Punkt ist toArray ist kein Mitglied der Object. Was ist der beste Weg, um die oben genannten zu tun? Ich habe versucht, .asInstanceOf[java.util.Collection[User]] zu verwenden, aber es war ein gescheiterter Versuch.

War es hilfreich?

Lösung

Verwenden scala.collection.jcl.Conversions:

import scala.collection.jcl.Conversions._
...
// this gets you a List[User]
val gameList = pm.newQuery(query).execute.asInstanceOf[java.util.List[User]].toList
...
// or you can just iterate through the return value without converting it to List
pm.newQuery(query).execute.asInstanceOf[java.util.List[User]] foreach (println(_))

Andere Tipps

Das Problem ist, dass die Java-Sammlung keine scala Sammlung ist. Youy müssen die impliziten Konvertierungen in dem jcl Paket:

import collections.jcl.Conversions._
import java.util.{Collection => JCollection}

val pm = PMF.factory.getPersistenceManager
val query = "select from User " 

val users = pm.newQuery(query).execute.asInstanceOf[JCollection[User]]
val gamelist:List[User] = List(users.toArray: _*) //implicit conversion here
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top