当前位置: 代码迷 >> J2SE >> 为啥集合不直接继承Iterator,而是用内部类
  详细解决方案

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

热度:1031   发布时间:2013-02-25 00:00:00.0
为什么集合不直接继承Iterator,而是用内部类?
在java的集合中,如List,Set,为什么要用迭代器?我看了一下源码,大概是这样的:iterator()方法会返回一个Iterator型的实现,而这个实现是一个中Itr的内部类
Java code
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编程思想,内部类的那一章,说内部类是用来解决“多重继承”问题的,但这个
问题接口也可以解决吧?内部类独特的地方在哪里呢?哪位兄台有好的例子可以供参考一下?成分感谢!

------解决方案--------------------------------------------------------
http://www.bianceng.cn/Programming/Java/200705/1552.htm

------解决方案--------------------------------------------------------
隐藏Iterator的具体实现
------解决方案--------------------------------------------------------
AbstractList已经是默认实现了Iterable接口了

它带有覆盖方法:

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

至于用内部类实现,我觉得因为某种程度上是它主类独用的,关联度高,可重用度不高。
  相关解决方案