2

我正在尝试将 JDO 与 Google App Engine 和 Scala 一起使用。执行返回的 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 is not a member of Object。执行上述操作的最佳方法是什么?我尝试使用.asInstanceOf[java.util.Collection[User]],但尝试失败。

4

2 回答 2

1

问题是 Java 集合不是 Scala 集合。你需要包中的隐式转换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 回答