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