سؤال

وأنا أحاول أن استخدام JDO مع محرك جوجل التطبيق وسكالا. واجهة برمجة التطبيقات لObject تنفيذ العوائد (لكنها في الحقيقة عبارة عن مجموعة جافا) وأنا ترغب في الحصول عليها في قائمة سكالا تكرار أكثر من ذلك.

ورمز بلادي يشبه هذا حتى الآن:

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

وهذا خطأ ترجمة في هذه المرحلة هو toArray ليس عضوا القطعة. ما هي أفضل طريقة للقيام أعلاه؟ حاولت استخدام .asInstanceOf[java.util.Collection[User]]، لكنها كانت محاولة فاشلة.

هل كانت مفيدة؟

المحلول

استخدم 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(_))

نصائح أخرى

والمشكلة هي أن جمع جافا ليس مجموعة سكالا. Youy بحاجة إلى تحويلات ضمنية في حزمة 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
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top