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?

Respuestas:


268
Container.this.select();

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!

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.