[英]Can't assign returned java.util.ArrayList to scala.collection.mutable.ArrayBuffer. Why?
我已经导入了这个:
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)
}
现在,getNeighbours返回一个java.util.ArrayList而不是ArrayBuffer(这是我无法控制的Java类)。
编译器说
类型ArrayList [Field]的表达式不符合预期的类型ArrayBuffer [Field]
JavaConversions是否应该解决这个问题? 如何轻松地将ArrayList转换为ArrayBuffer? (我不想在Scala代码中用ArrayList替换ArrayBuffer!)
ArrayBuffer
是由Array
支持的Buffer
的特定实现。 您不能有ArrayList
支持的ArrayBuffer
。
JavaConversions
为您提供了从java.util.List
到Buffer
(不是ArrayBuffer
)的包装转换。
您可以将fields
变量重新输入为Buffer[Field]
,或者必须将ArrayList
的元素复制到新的ArrayBuffer
:
fields = ArrayBuffer(field.getNeighours: _*)
因为ArrayBuffer不是ArrayList。 sjrd建议使用内置的javas转换,但您也可以使用for循环将数据从arraylist复制到新的ArrayBuffer,然后再传递。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.