Accédez à «this» à partir de la classe anonyme Java

143

Compte tenu du 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 veux accéder à Container.select()partir de la select()méthode de ma classe anonyme . Cependant, this.select()j'appellerais à nouveau la select()méthode de la classe anonyme .

Ma suggestion serait:

Introduisez un champ dans Container, par exemple

private Container self = this;

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

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

Bob
la source

Réponses:

268
Container.this.select();
Mykola Golubyev
la source
3
Je ne savais pas que même les thismots - clés pouvaient être différenciés comme le peuvent les méthodes et les attributs. +1
logo_writer
Il convient de noter que vous devez spécifier la Containerclasse Exactly ici. Aucun de ses ancêtres ne sera accepté.
velis
42

Vous pouvez écrire Container.this.select()à distinct de la classe interne!

PeterMmm
la source