Java anonim sınıfından “this” e erişin


143

Aşağıdaki kod verildiğinde:

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

Container.select()Anonim sınıfımın select()yönteminden erişmek istiyorum . Ancak this.select()yine anonim sınıfın select()yöntemini çağırır .

Benim önerim:

Kapsayıcıya bir alan yerleştirin, ör.

private Container self = this;

Artık anonim sınıfın içinden Container.select()arayarak erişebiliyorum self.select().

Bu makul bir yol mu? Yoksa daha iyi bir yol var mı?

Yanıtlar:


268
Container.this.select();

3
thisAnahtar kelimeler bile yöntemler ve öznitelikler gibi ayırt edilebilir bilmiyordum . +1
logo_writer

Burada Tam olarak Containersınıf belirtmeniz gerektiğine dikkat edilmelidir . Atalarından hiçbiri kabul edilmeyecek.
velis

42

Container.this.select()İç sınıftan farklı yazabilirsiniz !

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.