Acesse "this" da classe anônima Java


143

Dado o seguinte código:

public interface Selectable {
  public void select();
}

public class Container implements Selectable {
  public void select() {
  ...
  }
  public void createAnonymousClass() {
    Selectable s = new Selectable() {
      public void select() {
        //see comment below.
      }
    };
  }
}

Quero acessar Container.select()de dentro da minha classe anônima 'select() método da . No entanto, this.select()chamaria novamente o select()método da classe anônima ' .

Minha sugestão seria:

Introduzir um campo no Container, por exemplo

private Container self = this;

Agora eu posso acessar Container.select()chamandoself.select() de dentro da classe anônima.

Esta é uma maneira razoável? Ou existem maneiras melhores?

Respostas:


268
Container.this.select();

3
Eu não sabia que mesmo as thispalavras-chave poderiam ser diferenciadas, assim como métodos e atributos. +1
logo_writer

Note-se que você deve especificar exatamente a Containerclasse aqui. Nenhum de seus ancestrais não será aceito.
velis

42

Você pode escrever Container.this.select()para distintos da classe interna!

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.