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

时间:2015-07-24 17:06:41

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

现在getNeighbours返回java.util.ArrayList而不是ArrayBuffer(它是我无法控制的Java类)。

编译说

  

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

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

2 个答案:

答案 0 :(得分:5)

RenamedProperty[Bind(Prefix = GetOverviewResponse.NameOf(m => m.TheProperty))] 的特定实现,由ArrayBuffer支持。您不能拥有Buffer支持的Array

ArrayBuffer为您提供从ArrayListJavaConversions(不是java.util.List)的换行转换。

您要将Buffer变量重新键入ArrayBuffer,或者必须将<{1}}的元素复制到新fields

Buffer[Field]

答案 1 :(得分:0)

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