java程序转scala的互操作性问题

标签 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();
    }

最佳答案

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

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
 }

关于java程序转scala的互操作性问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17462137/

相关文章:

用于非泛型隐式参数的 Scala 糖

scala - 有没有办法从 Scala 程序中获取终端大小?

java - 将 scala.collection.iterator 对象放入 scala 类构造函数中

oop - 具有伴随对象的类与具有相同名称的类和对象之间有什么区别?

java - Netbeans JTextArea - 更改首选的可滚动视口(viewport)大小

重命名后找不到Java主类

java - 如何在 Spring 中将 AutopopulatedList<ChildClass> 引用到 List<AbstractBaseClass> ?

json - 在scala中创建多维数组

java - Scala 和 Java 的 future 显然有意想不到的互动

java - Java 和 Kotlin 中的共享接口(interface)之间的关系(例如 : List<>)