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 it = new Iterator();

否则,是“迭代器”类型吗?接口是否用作类型?谢谢你。

4

1 回答 1

1

迭代器是一个接口。类公开迭代器的最常见方法是实现 Iterable ,它又是一个接口。

迭代器为您提供了一种机制,您可以通过该机制逐步遍历集合中的所有成员。

有关迭代器的描述,请参见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 Book 中第一次提到的设计模式。(我相信)

另请注意,您不能单独创建新的迭代器。它确实需要一个实现才能运行。它通常由您的示例中的给定类(BookShelf)给出,因为该类知道如何逐步完成它的内部结构。

由于它是一个接口,因此不能使用 new 运算符声明它。但是它的具体实现是可以的。

于 2012-12-05T23:35:46.720 回答