2

Java構文について質問があります。サンプルプログラムを見つけました。

public class Main {
  public static void main(String[] args) {
    BookShelf bookShelf = new BookShelf(2);
    bookShelf.appendBook(new Book("around 80 Days"));
    bookShelf.appendBook(new Book("trivial solution"));
    Iterator it = bookShelf.iterator();
  }
}

これは、次のインターフェイスでコンパイルされます。

public interface Iterator {
  public abstract boolean hasNext();
  public abstract Object next();
}

このプログラムでは、「Iterator」クラスまたはタイプですか?クラスの場合、次の文のようなインスタンスを作成するには「new」が必要です。

Iterator it = new Iterator();

それ以外の場合、「イテレータ」タイプですか?インターフェイスはタイプとして使用されますか?ありがとうございました。

4

1 に答える 1

1

イテレータはインターフェースです。クラスがイテレータを公開するための最も一般的な方法は、これもインターフェイスであるIterableを実装することです。

Iteratorは、コレクション内のすべてのメンバーをステップスルーできるメカニズムを提供します。

Iteratorの説明については、http://docs.oracle.com/javase/7/docs/api/java/util/Iterator.htmlを参照してください。

反復可能なインターフェースについては、http: //docs.oracle.com/javase/7/docs/api/java/lang/Iterable.htmlを参照してください。

イテレータは、GOFブックで最初に言及されたデザインパターンです。(私は信じている)

また、単独で新しいイテレータを作成することはできないことに注意してください。実行するには実装が必要です。通常、このクラスは内部構造をステップスルーする方法を知っているため、例では特定のクラス(BookShelf)によって指定されます。

インターフェイスであるため、new演算子を使用して宣言することはできません。ただし、具体的な実装は可能です。

于 2012-12-05T23:35:46.720 に答える