¿Se puede inicializar el campo final privado de una subclase Java antes de que se complete el súper constructor?
Tengo un par de clases parecidas a esto;
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();
}
}
Supongo que el oyente es nulo porque estoy haciendo referencia a él desdesuper()
y no se ha instanciado todavía. Sin embargo, quiero hacerlofinal
porque, bueno, lo es. ¿Puedo hacer que este campo (el oyente) se inicie a tiempo sin ponerlo en la superclase (que nunca utilizará el oyente)?