Закрытый класс, вызывающий метод из его внешнего класса

Итак, у меня есть класс для "Продвинутой структуры данных" (в данном случае это своего рода дерево), поэтому я включил в него итератор как закрытый класс. Таким образом, итератор должен реализовать функцию удаления для удаления последнего элемента с повторным набором.

теперь мой ADT уже реализует функцию удаления, и в этом случае очень мало (думая об этом, я ничего не думаю) выгоды от реализации другой функции удаления для итератора.

так как мне позвонить удалить из моего ADT

Эскиз моего будущего:

public class ADT {
...
   private class ADT_Iterator impliments  java.util.Itorator{
      ...
      public void remove(){
          //where I want to call the ADT's remove function from
      }
...

    public void remove( Object paramFoo )
    {
     ...
    }

    ...     

}

Так что простой вызов remove(FooInstance) не будет работать (не так ли?), И this.remove(FooInstance) - это то же самое.

что я называю? (и изменить имя функции удаления ADT нельзя, так как AD T должен соответствовать Interace, который я могу изменить)

Я мог бы заставить их обоих вызывать функцию removeHelper, я думаю...

2 ответа

Решение
ADT.this.remove(object)

(Хотя простой вызов remove(object) будет работать в этом случае, так как он имеет другую сигнатуру, чем метод remove() в итераторе.)

Чтобы получить ссылку на внешний класс, к которому "присоединен" внутренний класс, используйте ClassName.this, в вашем случае:

   private class ADT_Iterator impliments  java.util.Itorator{
      ...
      public void remove(){
          ADT.this.remove(obj)
      }
Другие вопросы по тегам