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.