2

hasNext()、next()、remove()などのイテレータインターフェイスメソッドはどこで定義されていますか?インターフェイスはメソッドを定義せず、他のクラスで定義されているメソッドのみを宣言します。イテレータ参照を介してhasnext()、next()などのメソッドに直接アクセスするにはどうすればよいですか?例えば:

List l = new LinkedList();
l.add(1);
l.add(2); 
Iterator iter = l.iterator();
while(iter.hasNext())
{
    Object o = iter.next();
    System.out.println(o);
}

上記の例では、参照iter(Iterator参照)を使用して、iter参照に任意のメソッドを割り当てることができますか?コードの例を教えてください。私はこれまでこの概念を理解できませんでした。

4

2 に答える 2

4

あなたの質問が次の場合: LinkedList イテレータの実装はどこですか? 答えは次のとおりです: LinkedList クラスのプライベート内部クラスとして実装されています。

private class ListItr implements ListIterator<E> {
    private Node<E> lastReturned = null;
    private Node<E> next;
    private int nextIndex;
    private int expectedModCount = modCount;

    ...
}
于 2012-07-05T18:10:46.390 に答える
2

ダウンロードできる Java ソース コードを調べるか、ここに戻ってきたイテレータのクラスを印刷することで、自分で答えを見つけることができます。

しかし、より一般的に言えば、これのポイントは抽象化です。ここのデザイナーは特別に設計しているので、これらの詳細について心配する必要はありません

于 2012-07-05T18:09:59.297 に答える