web-dev-qa-db-fra.com

Accédez à "this" depuis Java classe anonyme

Étant donné le code suivant:

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.
      }
    };
  }
}

Je souhaite accéder à Container.select() à partir de la méthode _ select() de ma classe anonyme. Cependant, this.select() appellerait à nouveau la méthode de classe anonyme 'select().

Ma suggestion serait:

Introduisez un champ dans Container, par ex.

private Container self = this;

Maintenant, je peux accéder à Container.select() en appelant self.select() à partir de la classe anonyme.

Est-ce une manière raisonnable? Ou existe-t-il de meilleures façons?

139
Bob
Container.this.select();
259
Mykola Golubyev

Vous pouvez écrire Container.this.select() pour le distinguer de la classe interne!

41
PeterMmm