Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/320.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
试图覆盖scala中的java方法时出现类型错误_Java_Scala - Fatal编程技术网

试图覆盖scala中的java方法时出现类型错误

试图覆盖scala中的java方法时出现类型错误,java,scala,Java,Scala,我有一个用java定义的类 public class A { List<Group> javaMethod() { } } 但是,我得到一个错误,说方法javaMethod具有不兼容的类型,我假设是因为方法被覆盖时返回的列表的类型是scala.immutable.List,而javaMethod需要的类型是java.util.List 我没有访问类A的权限,因此无法更改函数的签名。如何返回覆盖该方法的scala列表,而不出现类型错误 编辑: 这将使我的列表从Java

我有一个用java定义的类

public class A {
    List<Group> javaMethod() {
    }
}
但是,我得到一个错误,说
方法javaMethod具有不兼容的类型
,我假设是因为方法被覆盖时返回的列表的类型是scala.immutable.List,而javaMethod需要的类型是java.util.List

我没有访问类A的权限,因此无法更改函数的签名。如何返回覆盖该方法的scala列表,而不出现类型错误

编辑: 这将使我的列表从Java到Scala,但我想将Java列表转换为Scala列表

import scala.collection.JavaConversions._
import scala.collection.mutable.ListBuffer
asList(ListBuffer(List(1,2,3): _*))
val x: java.util.List[Int] = ListBuffer(List(1,2,3): _*)

我想你做不到。返回值必须是
列表的(子类)
。要获得完全不同的返回类型,您必须创建不同的方法,例如
javaMethod2
,并且假设您的实现实际创建了
List[Group]
,那么您仍然会覆盖
javaMethod
,但返回类型为
List
,只需调用
javaMethod2
并将
List[Group]
转换为
List
。可能重复@shmosel,我想用相反的方法做什么阻止您使用
java.util.List[Group]
?依赖于该值的整个剩余代码库
import scala.collection.JavaConversions._
import scala.collection.mutable.ListBuffer
asList(ListBuffer(List(1,2,3): _*))
val x: java.util.List[Int] = ListBuffer(List(1,2,3): _*)