看看下面代码该怎么办,我想返回scala的List

wanghuanqiu 2012-10-24
  def findAll(): List[T] = {
     getJpaTemplate().find("from " + persistentClass.getName)
  }

getJpaTemplate().find("from " + persistentClass.getName) 返回一个java.util.List

如果想返回一个scala的List,
getJpaTemplate().find("from " + persistentClass.getName).asInstanceOf[List[Person]].toList这样不行,强制转换是不可以的。
如果用asScala不能返回T这个泛型,编译都不过
难道只能这么写吗
def findAll(): List[T] = {
    var ls: JList[T] = getJpaTemplate().find("from " + persistentClass.getName).asInstanceOf[JList[T]]
    var i = 0;
    var s = List[T]();
    while(i < ls.size()){
      s:::=List(ls.get(i))
      i=i+1
    }
    s
  }
恳求指点
squirel 2012-10-25
import collection.JavaConversions._

就可以进行隐式类型转换,你可以把java list当成一个scala mutable Buffer或Seq使用,具体请看collection.JavaConversions API说明
wanghuanqiu 2012-10-25
squirel 写道
import collection.JavaConversions._

就可以进行隐式类型转换,你可以把java list当成一个scala mutable Buffer或Seq使用,具体请看collection.JavaConversions API说明

但是buffer是不带类型的,只是一个Buffer[?],如过用buffer就不能用泛型T
wanghuanqiu 2012-10-25
明白了关键这段代码是getJpaTemplate().find("from " + persistentClass.getName)这句导致的没有返回T泛型
XIAOLINJAVA 2013-02-21
为了实现Java与Scala集合的互相转换,Scala提供2个API
import scala.collection.JavaConversions._
import scala.collection.JavaConverters._

具体的转换方式请进入我的博客主页参考:

Java软件攻城师联盟网:我是软件攻城师,我为自己代言

http://javalianmong.sinaapp.com/?p=111
Global site tag (gtag.js) - Google Analytics