无法从子类,ArrayBuffer访问ResizableArray的受保护方法swap。

时间:2009-10-31 15:10:14

标签: scala

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)
         ^

1 个答案:

答案 0 :(得分:4)

根据this documentationswap被声明为受保护的方法 - 这意味着您可以在ArrayBuffer的代码(或从{{1}派生的任何其他类中访问它}},你不能从其他类访问它。

来自Scala Language Specification,第57页:

  

protected修饰符适用于   类成员定义。受保护   可以访问类的成员   来自内部    - 定义类的模板,
   - 将定义类作为基类的所有模板,
   - 任何这些类的伴随模块。

你不属于任何一种情境,这就是你看到错误的原因。