繁体   English   中英

无法将返回的java.util.ArrayList分配给scala.collection.mutable.ArrayBuffer。 为什么?

[英]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.ListBuffer (不是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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM