2009-07-05 19 views
120

aşağıdaki kodu Verilen:Erişim "bu" Java anonim sınıftan

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

benim anonim sınıfın select() yöntemi içinde Container.select() erişmek istiyorum. Ancak, this.select() yeniden anonim sınıf 'select() yöntemini çağırır.

Benim önerim olacaktır:

Konteyner, örneğin içine bir alan tanıtın

private Container self = this; 

Şimdi anonim sınıfın içinden self.select() arayarak Container.select() erişebilirsiniz.

Bu makul bir yol mu? Ya da daha iyi bir yolu var mı?

cevap

236
Container.this.select(); 
+9

İşte bu benim için tamamen yeni bir şey. –

+1

Ben bile bilmiyorum '' '' '' '' '' anahtar kelimeler, metodlar ve öznitelikler gibi farklılaşabilir. +1 –

+0

Tam olarak 'Container' sınıfını burada belirtmeniz gerektiğini unutmayın. Atalarının hiçbiri kabul edilmeyecek. – velis

39

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