首页 > 代码库 > Iterator迭代器源码简略分析
Iterator迭代器源码简略分析
Iterator it = c.iterator()
当在执行这行语句时,它是底层是怎么样子的?首先Collection extends Itrable,接口继
承接口,而Itrable中有一个抽象方法, Iterator iterator(),其返回值是Iterator,
Iterator接口中有三个抽象方法,hasNext(),next(),remove(),那么,Collection就应该
重写这个方法,但是它是一个接口,接口中只有抽象方法,我们应该看看它的子类有没有做
这个事情,我们发现List接口继承了Collction,那么它应该重写这个方法吧,但是,它是一
个接口,也不行,所以我们应该去看看它的子类,这时我们发现了ArrayList,ArrayList
implements List,这说明ArrayList是一个实现类,类中肯定重写了父接口的方法,
public Iterator iterator(){
return new Itr();
}
这是什么?返回值不是Iterator么?它返回一个 new Itr()是什么鬼?
别急,当我们看到一个类的返回值是一个接口或者抽象类时,那么它肯定返回的是一个子类对象,
private class Itr implements Iterator {
public boolean hasNext() {.....}
public Object next() {......}
public void remove() {......}
}
Itr是不是Iterator的一个子类对象?类中是不是重写了hasNext()、next()、remove()方法?当然现在都看不懂方法实现
那么当我们在执行
it.hasNext()时,编译看左边,Iterator中是不是有hasNext()方法?运行看右边子类Itr中是不是重写有hasNext()方法?
然后就是方法体实现的事情了。。
Iterator迭代器源码简略分析
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。