2015-03-31 9 views
5

ich in so etwas wie dies vor kurzem lief ...Resolving Mehrdeutigkeit, wenn die Eltern Zugriff von anonymer Klasse

public final class Foo<T> 
implements Iterable<T> { 

    //... 

    public void remove(T t) { /* banana banana banana */ } 

    //... 

    public Iterator<T> Iterator { 
     return new Iterator<T>() { 

      //... 

      @Override 
      public void remove(T t) { 
       // here, 'this' references our anonymous class... 
       // 'remove' references this method... 
       // so how can we access Foo's remove method?   
      } 

      //... 

     }; 
    } 
} 

Gibt es eine Möglichkeit zu tun, was ich bin versucht, während dies als eine anonyme Klasse zu halten? Oder müssen wir eine innere Klasse oder etwas anderes benutzen?

+0

mögliche Duplikate von [Das äußere Klassenobjekt vom inneren Klassenobjekt erhalten] (http://stackoverflow.com/questions/1816458/getting-hold-of-the-outer-class-object- from- the -inner-class-object) – Raedwald

Antwort

7

Sie können auf die umschließende Klasse zugreifen, indem Sie Classname.this verwenden. Also in Ihrem Beispiel:

public void remove(T t){ 
    Foo.this.remove(t); 
} 
2

Foo.this.remove (t) den Trick für dich.

+5

Es gibt bereits genau die gleichen Antworten. Bitte aktualisiere sie, anstatt ein Duplikat zu veröffentlichen. –

Verwandte Themen