Можно ли инициализировать приватное конечное поле подкласса java до завершения работы суперструктора?
У меня есть пара классов, похожих на это;
public abstract class Class1 {
//...
public Class1() {
//...
function2();
//...
}
protected abstract void function2();
}
public class Class2 implements Class1 {
private final OnSomethingListener mOnSomethingListener = new OnSomethingListener() {
@Override
onSomething() {
doThatOtherThing();
}
}
protected void function2() {
//uses mOnSomethingListener
//however mOnSomethingListener is null when this function is called from super()
//...
}
public Class2() {
super();
}
}
Я предполагаю, что слушатель нулевой, потому что я эффективно ссылаюсь на него изsuper()
и он еще не создан. Тем не менее, я хочу сделать этоfinal
потому что, ну, это так. Можно ли заставить это поле (слушателя) инициализироваться вовремя, не помещая его в суперкласс (который никогда не будет использовать слушателя, когда-либо)?