1

私はコレクションを扱っています。私を悩ませていることの 1 つは、java.util.Iterator インターフェイスのメソッドの実装がどこにあるのかということです。これらのメソッドはどのクラスに実装されていますか?

 public abstract boolean hasNext();
 public abstract E next();
 public abstract void remove();

Java API のソース コードを検索しましたが、どのクラスにもこれらのメソッドの実装が見つかりませんでした。

4

4 に答える 4

7

Iterator はインターフェースであり、Java API 自体に約 50 の実装があります。イテレータは反復オブジェクト型に準拠する必要があるため、たとえば ArrayList を反復したい場合、 iterator() メソッドが返すイテレータ インスタンスは新しい Itr 型です。ArrayList の基本クラスを形成する java.util.AbstractList クラスの実装を参照してください。

于 2012-09-02T06:58:02.173 に答える
1

それが実装されているJDKには複数のクラスがあります。ArrayList は、懸念事項の非常に良い例です。コードは openJDK で確認できます。iteratorメソッドの定義は -

  public Iterator<E> iterator() {
         return new Itr();
     }

この Itr プライベート クラスはIterator<E>、すべての iterator メソッドを実装および定義します。

于 2012-09-02T07:17:40.973 に答える
0

Iteratorを実装しているJava APIを検索できます。これらのクラスはすべて、上記のメソッドを実装しています。jdk のソース コードを参照します。それはあなたを大いに助けます。

于 2012-09-02T07:02:06.600 に答える
0

Eclipse を使用していて、Eclipse 自体で構成されたソース コードがある場合。

メソッドを選択して Ctrl + T (型階層を表示) を押すだけで、そのメソッドが実装されているすべてのクラスを確認できます。

于 2012-09-02T07:06:36.393 に答える