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?

Jawaban:


268
Container.this.select();

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!

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.