141 votes

Accéder à "this" depuis une classe anonyme Java

É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 veux accéder à Container.select() à partir de ma classe anonyme select() méthode. Cependant, this.select() appelle à nouveau la classe anonyme select() méthode.

Ma suggestion serait :

Introduire 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 méthode raisonnable ? Ou existe-t-il de meilleures méthodes ?

264voto

Mykola Golubyev Points 21210
Container.this.select();

42voto

PeterMmm Points 11099

Vous pouvez écrire Container.this.select() à distinguer de la classe intérieure !

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X