3

ArrayListを拡張して、反復しながら通常のArrayListメソッドを使用して変更できるカスタムArrayListを作成しています。このために、私はイテレータも作成しています。

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()メソッドとnext()メソッドの間、リストが変更されていないことを確認する必要があります(他のときに変更できます)。したがって、synchronized()ブロックで囲んでいるタイプを参照する必要があります。

4

1 に答える 1

5

EnclosingType.this。したがって、あなたの場合は、になりますSynchronizedList.this

于 2012-04-08T02:36:53.593 に答える