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?

Réponses:


268
Container.this.select();

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!

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.