ArrayBuffer扩展了ResizableArray,其中包含一个受保护的方法swap。但我无法访问交换。我错过了什么?
scala> import scala.collection.mutable.ArrayBuffer
import scala.collection.mutable.ArrayBuffer
scala> val x=new ArrayBuffer[Int]()
x: scala.collection.mutable.ArrayBuffer[Int] = ArrayBuffer()
scala> x+=3
scala> x+=5
scala> x.swap(0,1)
<console>:7: error: method swap cannot be accessed in scala.collection.mutable.ArrayBuffer[Int]
x.swap(0,1)
^
答案 0 :(得分:4)
根据this documentation,swap
被声明为受保护的方法 - 这意味着您可以在ArrayBuffer
的代码(或从{{1}派生的任何其他类中访问它}},你不能从其他类访问它。
来自Scala Language Specification,第57页:
protected修饰符适用于 类成员定义。受保护 可以访问类的成员 来自内部 - 定义类的模板,
- 将定义类作为基类的所有模板,
- 任何这些类的伴随模块。
你不属于任何一种情境,这就是你看到错误的原因。