Akses "ini" dari kelas anonim Java

143

Diberikan kode berikut:

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

Saya ingin mengakses Container.select()dari dalam select()metode kelas anonim saya . Namun, this.select()akan kembali memanggil metode kelas anonim select().

Saran saya adalah:

Perkenalkan bidang ke dalam Kontainer, mis

private Container self = this;

Sekarang saya dapat mengakses Container.select()dengan menelepon self.select()dari dalam kelas anonim.

Apakah ini cara yang masuk akal? Atau ada cara yang lebih baik?

Bob
sumber

Jawaban:

268
Container.this.select();
Mykola Golubyev
sumber
3
Saya tidak tahu bahkan thiskata kunci dapat dibedakan seperti halnya metode dan atribut dapat. +1
logo_writer
Perlu dicatat bahwa Anda harus menentukan Containerkelas yang tepat di sini. Semua leluhurnya tidak akan diterima.
velis
42

Anda dapat menulis Container.this.select()berbeda dari kelas dalam!

PeterMmm
sumber