我想从非final类的实例方法中检查该类的构造函数和初始值设定项及其特定实例的子类链是否已经完成.
在下面的示例中,我有一个Abstract类,它可以用来实现一个允许添加侦听器的接口(为简单起见,这里只是Runnable实例),它提供了一个方法signalEvent(),它调用所有连接的侦听器.
abstract class Abstract {
protected final void signalEvent() {
// Check that constructs have run and call listeners.
}
public final void addListener(Runnable runnable) {
...
}
}
class Concrete extends Abstract {
Concrete() {
// Should not call signalEvent() here.
}
void somethingHappened() {
// May call signalEvent() here.
}
}
现在可以从子类构造函数中调用signalEvent(),但是那时候没有办法添加一个监听器,事件就会丢失.在我们的代码库中,偶尔会有人添加这样的调用,我希望能够尽早捕获这些调用(使用断言语句或类似语句).
是否可以直接或间接地从当前实例的子类构造函数或初始化程序中检查实例方法,或者,是否可以检查实例的所有构造函数是否都已完成?