Java Iterator作为一个类?

Ric*_*rdK -1 java iterator

我被一些看似obvoius的东西所吸引,但这不适合我.我们有一个hashSet和Iterator:

Set<String> set = new HashSet<>();
Iterator it = set.iterator();
Run Code Online (Sandbox Code Playgroud)

我知道,迭代器是如何工作的,但对我来说有些奇怪:

Iterator*it = set.iterator();**
*ok,等等.Iterator是一个接口,而不是一个类.那么......?
**好吧,set是HashSet类的一个对象,它实现了接口Iterator,所以ith有一个void interator()imlemented,没什么不寻常的.

但是我们如何从Iterator接口创建Iterator对象?

khe*_*ood 5

iterator()方法的实现HashSet返回实现Iterator接口的对象.返回的对象是符合Iterator规范的某个具体类的实例.

http://en.wikipedia.org/wiki/Polymorphism_(computer_science)


NPE*_*NPE 5

首先,HashSet实现Iterable而不是Iterator.这两个接口是相关但不同的.

现在回答你的问题.这一切

Iterator it = ...;
Run Code Online (Sandbox Code Playgroud)

实际上意味着它it是对实现接口的类的实例的引用Iterator.它不是"接口"的引用(这样的事情确实没有多大意义,因为你无法实例化接口).