Como você obter uma referência para a classe envolvente a partir de um anônimo interior de classe em Java?[duplicado]
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?
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.