2015-03-31 2 views
5

Недавно я столкнулся с чем-то вроде этого ...Устранение неоднозначности при Доступ родительского класса из анонимного класса

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?   
      } 

      //... 

     }; 
    } 
} 

Есть ли способ сделать то, что я пытаюсь, сохраняя при этом в качестве анонимного класса? Или нам нужно использовать внутренний класс или что-то еще?

+0

Возможный дубликат [Получение внешнего объекта класса из внутреннего объекта класса] (http://stackoverflow.com/questions/1816458/getting-hold-of-the-outer-class-object-from-the -inner-class-object) – Raedwald

ответ

7

Вы можете получить доступ к закрывающему классу, используя Classname.this. Таким образом, в вашем примере:

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

Foo.this.remove (т) будет делать трюк для тебя.

+5

Уже есть те же ответы. Продвиньте их, а не отправляйте дубликат. –

Смежные вопросы