2012-04-08 3 views
3

Я расширяю ArrayList, чтобы создать пользовательский ArrayList, который может быть изменен с использованием обычных методов ArrayList во время итерации по нему. Для этого я также создаю Итератор.Как обратиться к классу Enclosing из класса Inner?

public class SynchronizedList<E> extends ArrayList<E> 
{ 
    // Fields here 

    //Constructors and methods here 

public class SynchronizedListIterator<E> implements Iterator<E> 
{ 
    public int index; 
    private E current; 

    public boolean hasNext() 
    { 
     synchronized (/* reference to enclosing List object */) { 
        //code goes here 
     } 
     return false; 
    } 

    //more methods here 
} 
} 

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

+0

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

ответ

5

EnclosingType.this. Так что в вашем случае это будет SynchronizedList.this.

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