您的位置:首页技术文章
文章详情页

java - 如图代码,Collection 类中的iterator()是抽象方法,为什么可以调用?

【字号: 日期:2024-02-08 14:01:46浏览:67作者:猪猪

问题描述

Collection c1 =new ArrayList();c1.add('hello');c1.add(1);Collection c2 =new ArrayList();c2.add(new Student() );c2.addAll(c1);c2.add('我');Iterator it = c2.iterator();

Collection 与List 还有ArrayList都没有重写iterator()方法,为什么可以最后一步这样调用呢?

问题解答

回答1:

ArrayList继承自AbstractList类, AbstractList类重写了List接口的iterator()方法:

public Iterator<E> iterator() { return new Itr();}

其中Itr是AbstractList的内部类,实现了Iterator接口。

回答2:

ArrayList不是有吗??

回答3:

这个Iterator应该是ArrayList的内部类吧,如果ArrayList中找不到的话它的基类中应该有,不同的集合类Iterator应该也各不相同,你可以自己看看源码。

标签: java