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?

Prumo
fonte

Respostas:

268
Container.this.select();
Mykola Golubyev
fonte
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!

PeterMmm
fonte