Como você obter uma referência para a classe envolvente a partir de um anônimo interior de classe em Java?[duplicado]

StackOverflow https://stackoverflow.com/questions/31201

  •  09-06-2019
  •  | 
  •  

Pergunta

Esta pergunta já tem uma resposta aqui:

No momento, estou criando uma referência explícita a este na parte externa de classe para que eu tenha um nome para referir-se a classe interna anônima.Não há melhor maneira de fazer isso?

Foi útil?

Solução

Eu apenas descobri isso recentemente.Utilização OuterClassName.this.

class Outer {
    void foo() {
        new Thread() {
            public void run() {
                Outer.this.bar();
            }
        }.start();
    }
    void bar() {
        System.out.println("BAR!");
    }
}

Atualizado Se você quiser apenas o objeto em si (em vez de invocar membros) e, em seguida, Outer.this é o caminho a percorrer.

Outras dicas

Utilização EnclosingClass.this

Você ainda pode usar Outer.class para obter a classe do exterior da classe de objeto (que irá retornar o mesmo objeto de Classe como Exterior.isso.getClass (), mas é mais eficiente)

Se você deseja acessar estática na classe envolvente, você pode usar o Exterior.nome onde nome é o campo estático ou método.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top