GOOGLE ADS

sábado, 30 de abril de 2022

Cómo asegurarse de que un objeto de superclase no sea nulo

Tengo dos clases, una es la subclase de otra. Quiero hacerlo para que la superclase pueda hacer sus métodos originales incluso si el objeto real es una instancia de la subclase.

El siguiente código imprime hola nulo y luego genera el error:Cannot invoke "A.doThis()" because "this.object" is null

public class A {
A object;
public void doSomething(){
System.out.println("hello " + object);
object.doThis();
}
public void doThis(){
System.out.println("Did this");
}
}

public class B extends A{
B object;
public static void main(String[] args){
B b = new B();
b.create();
}
public void create(){
object = new B();
object.doSomething();
}
}

Entiendo que en la Clase A, el objeto en realidad no se crea en ninguna parte, por lo que probablemente sea nulo. Me pregunto cómo puedo hacer para que no lo sea.


Solución del problema

If you want to reference an instance of the class within one of its methods, then use this.

Si desea asegurarse de que un método en una superclase mantenga su implementación original y nunca sea anulado por una subclase, entonces conviértalo en definitivo.

Si esto no es lo que quiere, entonces no creo que lo que está tratando de hacer sea realmente práctico.

public class A {
public final void doSomething(){
System.out.println("hello " + this);
this.doThis();
}
public final void doThis(){
System.out.println("Did this");
}
}
public class B extends A{
public static void main(String[] args){
B b = new B();
b.create();
}
public void create(){
this.doSomething();
}
}

No hay comentarios:

Publicar un comentario

Regla de Firestore para acceder a la generación de subcolección Permisos faltantes o insuficientes

Tengo problemas con las reglas de Firestore para permitir el acceso a algunos recursos en una subcolección. Tengo algunos requests document...