Ainda não tem acesso? Estude com a gente! Matricule-se
Ainda não tem acesso? Estude com a gente! Matricule-se

Solucionado (ver solução)

Static this

class B {
      static void y() {
        this.z();
    }
    static void z() {
        System.out.println("z");
    }
}
class A {
    public static void main(String[] args) {
        new A().x();
    }
    static void x() {
        new B().y();
    }
}

Dessa forma também funciona?

1 resposta
solução

Oi Manoel!

Não funciona por conta desta parte:

static void y() {
    this.z();
}

Não é possível usar o this num método estático, porque o this está associado com uma referência para um objeto. Quando usamos o static, não temos garantia que existe uma referência para um objeto. Isto porque podemos simplesmente fazer:

B.y();

Chamamos sem criar objeto e sem possuir referência. Por isso o this não funciona neste contexto.

Abraço!