我有一个关于 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();
}
}
这是用以下接口(interface)编译的。
public interface Iterator {
public abstract boolean hasNext();
public abstract Object next();
}
在这个程序中,'Iterator' 是类还是类型? 如果是类,则需要'new'来创建实例,如下面的句子。
Iterator it = new Iterator();
否则,'Iterator' 是类型吗?接口(interface)是否用作类型? 谢谢。
最佳答案
迭代器是一个接口(interface)。类公开迭代器的最常见方法是实现 Iterable,它也是一个接口(interface)。
迭代器为您提供了一种机制,您可以通过该机制遍历集合中的所有成员。
参见 http://docs.oracle.com/javase/7/docs/api/java/util/Iterator.html获取迭代器的描述。
参见 http://docs.oracle.com/javase/7/docs/api/java/lang/Iterable.html对于可迭代接口(interface)。
Iterator是GOF Book中最先提到的一种设计模式。 (我相信)
另请注意,您不能单独创建一个新的迭代器。它确实需要一个实现才能运行。它通常由您的示例中的给定类 (BookShelf) 给出,因为该类知道如何遍历它的内部结构。
因为它是一个接口(interface),所以不能使用 new 运算符声明它。但是具体实现可以。
关于接口(interface)的java类和类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13734432/