【发布时间】:2012-11-03 07:34:17
【问题描述】:
在伴生对象中,我希望有一个字段记录从伴生类实例化的所有实例(它是抽象的),我可以这样做吗?
特别是,我认为this 会引用子类的任何实例,但是当我在伴随对象中使用它时它不会编译。
【问题讨论】:
在伴生对象中,我希望有一个字段记录从伴生类实例化的所有实例(它是抽象的),我可以这样做吗?
特别是,我认为this 会引用子类的任何实例,但是当我在伴随对象中使用它时它不会编译。
【问题讨论】:
例如,您需要自己编写代码(不是线程安全的):
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
}
}
【讨论】:
object 中的this(不管它是否是伴随对象)指的是对象。例如
scala> object A { def foo = 1; def bar = this.foo }
defined module A
scala> A.bar
res0: Int = 1
【讨论】: