Czy prywatne końcowe pole podklasy java może zostać zainicjowane przed zakończeniem super konstruktora?
Mam parę klas wyglądających tak;
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();
}
}
Zakładam, że detektor ma wartość NULL, ponieważ skutecznie odwołuję się do niegosuper()
i nie zostało jeszcze utworzone. Jednak chcę to zrobićfinal
bo tak jest. Czy mogę uzyskać to pole (słuchacz) do zainicjowania w czasie bez umieszczania go w nadklasie (co nigdy nie będzie używać słuchacza)?