Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/scala/17.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
Can';t将返回的java.util.ArrayList分配给scala.collection.mutable.ArrayBuffer。为什么?_Java_Scala_Collections_Scala Java Interop - Fatal编程技术网

Can';t将返回的java.util.ArrayList分配给scala.collection.mutable.ArrayBuffer。为什么?

Can';t将返回的java.util.ArrayList分配给scala.collection.mutable.ArrayBuffer。为什么?,java,scala,collections,scala-java-interop,Java,Scala,Collections,Scala Java Interop,我导入了这个: import scala.collection.JavaConversions._ val size: Int = blubb.getSize var fields: ArrayBuffer[Field] = new ArrayBuffer[Field] size match { case 1 => fields.append(field) case 2 => fields = field.getNeighbours) } 现在GetNeight

我导入了这个:

import scala.collection.JavaConversions._

val size: Int = blubb.getSize
var fields: ArrayBuffer[Field] = new ArrayBuffer[Field]

size match
{
    case 1 => fields.append(field)
    case 2 => fields = field.getNeighbours)
}
现在GetNeights返回一个java.util.ArrayList而不是ArrayBuffer(这是一个我无法控制的java类)

编译说

ArrayList[Field]类型的表达式不符合预期类型 ArrayBuffer[字段]


JavaConversion不应该处理这个问题吗?如何轻松地将ArrayList转换为ArrayBuffer?(我不想在Scala代码中用ArrayList替换ArrayBuffer!)

一个
ArrayBuffer
是一个
缓冲区的特殊实现,由
数组支持。不能让
ArrayBuffer
ArrayList
支持

JavaConversions
为您提供了从
java.util.List
Buffer
(非
ArrayBuffer
)的包装转换

您可以将
字段
变量重新键入为
缓冲区[Field]
,或者必须将
数组列表的元素复制到新的
数组缓冲区

fields = ArrayBuffer(field.getNeighours: _*)

ArrayBuffer
是一种由
数组
支持的
缓冲区
的特殊实现。不能让
ArrayBuffer
ArrayList
支持

JavaConversions
为您提供了从
java.util.List
Buffer
(非
ArrayBuffer
)的包装转换

您可以将
字段
变量重新键入为
缓冲区[Field]
,或者必须将
数组列表的元素复制到新的
数组缓冲区

fields = ArrayBuffer(field.getNeighours: _*)

因为ArrayBuffer不是ArrayList。sjrd建议使用Java内置转换,但也可以在传递数据之前使用for循环将数据从arraylist复制到新的ArrayBuffer。

因为ArrayBuffer不是arraylist。sjrd建议使用Java内置转换,但您也可以在传递数据之前使用for循环将数据从arraylist复制到新的ArrayBuffer。

应该显示支持的内容。我要提到的是,通常最好使用
JavaConverters
而不是
JavaConversions
,这样您就知道了(因为您明确指定)将会发生什么。应该显示支持什么。我要提到的是,通常最好使用
JavaConverters
而不是
JavaConverations
,这样您就知道(因为您明确指定)将会发生什么。您的第二个示例不会为我编译:案例2=>{fields=ArrayBuffer(field.getNeights(new Vector2(this.posX,this.posY),world):*);fields.append(field);fieldScont=3}预期的Seq[NotInferedA]实际的ArrayList[field]实际上第一个也不起作用。ArrayList[field]类型的表达式与预期的类型Buffer[field]不一致你说得对。不仅要重新加载我的想法,还要重新加载我的整个系统。不知道为什么。今天没有做任何更新(滚动发行版,Archlinux)oO,谢谢!你的第二个例子不会为我编译:案例2=>{fields=ArrayBuffer(field.getNeights(new Vector2(this.posX,this.posY),world):\u*;fields.append(field);fieldScont=3}预期的Seq[NotInferedA]实际的ArrayList[Field]实际上你的第一个也不起作用。ArrayList[Field]类型的表达式不符合预期的类型缓冲区[Field]你是对的。不仅要重新加载我的想法,还要重新加载我的整个系统。不确定为什么。今天没有做任何更新(滚动版本,Archlinux)oO,谢谢!