为什么集合不直接继承Iterator,而是用内部类?

野生程序猿. 2012-08-20 04:14:36
在java的集合中,如List,Set,为什么要用迭代器?我看了一下源码,大概是这样的:iterator()方法会返回一个Iterator型的实现,而这个实现是一个中Itr的内部类

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

//内部类
private class Itr implements Iterator<E> {
public boolean hasNext(){
//……
}

public E next() {
//……
}

public void remove() {
//……
}
//other method……
}


如果让AbstractList实现Iterator接口,使用的时候将集合的引用赋值给Iterator型的变量不就可以了吗?
为什么要煞费心机地设计一个内部类?

另外,这几天小弟在看Java编程思想,内部类的那一章,说内部类是用来解决“多重继承”问题的,但这个
问题接口也可以解决吧?内部类独特的地方在哪里呢?哪位兄台有好的例子可以供参考一下?成分感谢!
...全文
178 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
dracularking 2012-08-20
  • 打赏
  • 举报
回复
AbstractList已经是默认实现了Iterable接口了

它带有覆盖方法:

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

至于用内部类实现,我觉得因为某种程度上是它主类独用的,关联度高,可重用度不高。
Firebirds 2012-08-20
  • 打赏
  • 举报
回复
隐藏Iterator的具体实现

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧