为什么集合不直接继承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();
}
至于用内部类实现,我觉得因为某种程度上是它主类独用的,关联度高,可重用度不高。