2

GoogleAppEngineとScalaでJDOを使用しようとしています。実行用のAPIが返されObject(ただし、実際にはJavaコレクションです)、それをscalaリストに入れて反復処理したいと思います。

これまでのところ、私のコードは次のようになっています。

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

この時点でのコンパイルエラーは、toArrayがObjectのメンバーではないことです。上記を行うための最良の方法は何ですか?使ってみまし.asInstanceOf[java.util.Collection[User]]たが失敗しました。

4

2 に答える 2

1

問題は、Java コレクションがスカラ コレクションではないことです。jclパッケージに暗黙的な変換が必要です。

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
于 2009-08-03T07:11:10.470 に答える
1

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(_))
于 2009-08-03T07:35:08.900 に答える