Java程序将scala转换为互操作性问题

时间:2013-07-04 04:56:42

标签: java scala scala-java-interop

这里发生java列表转换错误

Scala代码

 @SuppressWarnings("unchecked") 
  @Override
  def getAllStudents():List[Student] = {
    return getSession().createQuery("from Student where isDelete =  'false' ")
    .list()  **here error occured and that shows below **
     }

这里我导入了这个声明,但没有改变

import scala.collection.JavaConverters._

错误 类型不匹配;发现:java.util.List [?0]其中类型为?0:  scala.collection.immutable.List [com.model.domain.entity.Student]

Java代码

@SuppressWarnings("unchecked")
    @Override
    public List<Student> getAllStudents() {
        return getSession().createQuery(
                "from Student where isDelete =  'false' ").list();
    }

1 个答案:

答案 0 :(得分:6)

您自己的答案不正确。相反,如果要实现需要返回Java列表的接口(或扩展类),则应该这样做:

def getAllStudents() : java.util.List[Student] = {
  getSession().createQuery("from Student where isDelete =  'false' ")
    .list()
 }

如果你需要Java列表,那么你应该做

import scala.collection.JavaConverters._

def getAllStudents() : Seq[Student] = {
  getSession().createQuery("from Student where isDelete =  'false' ")
    .list().asScala
 }