接口(interface)的java类和类型

标签 java

我有一个关于 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/

相关文章:

java - 有没有办法从字符串中删除除字符、数字和 '-' 之外的所有内容

c# - Amazon EC2 开发堆栈

java - 外键列被插入为空

java - 通过自定义按钮将数据从 JDialog 传递到框架

java - CORBA:服务器作为客户端

java - 在 Java 中定期调用函数

java - 尽管有 close 语句,数据库连接仍未关闭

java - 发现索引越界异常

java - 请求开发基于 GWT 的 Web 2.0 应用程序的建议

java - 我使用 Canvas 创建了一个绘图实用程序。有什么方法可以合并 JButtons、JTextFields 等