Acceda a "esto" desde la clase anónima de Java

143

Dado el siguiente 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.
      }
    };
  }
}

Quiero acceder Container.select()desde el select()método de mi clase anónima . Sin embargo, this.select()volvería a llamar al select()método de la clase anónima .

Mi sugerencia sería:

Introducir un campo en el contenedor, p. Ej.

private Container self = this;

Ahora puedo acceder Container.select()llamando self.select()desde dentro de la clase anónima.

¿Es esta una forma razonable? ¿O hay mejores formas?

Beto
fuente

Respuestas:

268
Container.this.select();
Mykola Golubyev
fuente
3
No sabía que incluso las thispalabras clave podían diferenciarse del mismo modo que los métodos y los atributos. +1
logo_writer
Cabe señalar que debe especificar la Containerclase Exactamente aquí. Ninguno de sus antepasados ​​no será aceptado.
velis
42

¡Puedes escribir Container.this.select()a distintos de la clase interna!

PeterMmm
fuente