Закрытый класс, вызывающий метод из его внешнего класса
Итак, у меня есть класс для "Продвинутой структуры данных" (в данном случае это своего рода дерево), поэтому я включил в него итератор как закрытый класс. Таким образом, итератор должен реализовать функцию удаления для удаления последнего элемента с повторным набором.
теперь мой 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)
}