2012-04-08 14 views
3

Ich erweitere ArrayList, um eine benutzerdefinierte ArrayList zu erstellen, die mit normalen ArrayList-Methoden beim Iterieren geändert werden kann. Dazu erstelle ich auch einen Iterator.Wie bezieht man sich auf Umschließende Klasse von Innerer Klasse?

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

Während meiner hasNext() und next() Methoden, muss ich die Liste stellen Sie sicher, nicht geändert wird (es zu jedem anderen Zeitpunkt geändert werden kann). Daher muss ich in meinem synchronisierten() Block auf meinen umschließenden Typ verweisen.

+0

mögliche Duplikate von [Access Outer Class diese Instanz] (http://StackOverflow.com/questions/1721608/access-Outer-Class-This-Instance) und [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) –

Antwort

5

EnclosingType.this. In Ihrem Fall wäre es also SynchronizedList.this.

Verwandte Themen