2

在伴生对象中,我想要一个记录从伴生类实例化的所有实例的字段(它是抽象的),我可以这样做吗?

特别是,我认为this会引用子类的任何实例,但是当我在伴随对象中使用它时它不会编译。

4

2 回答 2

6

例如,您需要自己编写代码(不是线程安全的):

abstract class C {
  // executed by all subclasses during construction
  C.registerInstance(this) 
}


object C {
  private val instances = ListBuffer[C]()
  def registerInstance(c: C) {
    instances += c
  }
}
于 2012-11-03T10:39:30.380 回答
4

thisin an object(不管它是否是伴随对象)指的是对象。例如

scala> object A { def foo = 1; def bar = this.foo } 
defined module A

scala> A.bar
res0: Int = 1
于 2012-11-03T08:12:57.370 回答