Java Iterator作为一个类?

时间:2014-10-21 20:32:44

标签: java iterator

我对看起来很晦涩的东西很感兴趣,但它并不适合我。我们有一个hashSet和Iterator:

Set<String> set = new HashSet<>();
Iterator it = set.iterator();

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

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

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

2 个答案:

答案 0 :(得分:5)

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

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

答案 1 :(得分:5)

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

现在回答你的问题。所有

Iterator it = ...;

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