我被一些看似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对象?
iterator()方法的实现HashSet返回实现Iterator接口的对象.返回的对象是符合Iterator规范的某个具体类的实例.
http://en.wikipedia.org/wiki/Polymorphism_(computer_science)
首先,HashSet实现Iterable而不是Iterator.这两个接口是相关但不同的.
现在回答你的问题.这一切
Iterator it = ...;
Run Code Online (Sandbox Code Playgroud)
实际上意味着它it是对实现接口的类的实例的引用Iterator.它不是"接口"的引用(这样的事情确实没有多大意义,因为你无法实例化接口).
| 归档时间: |
|
| 查看次数: |
80 次 |
| 最近记录: |