本帖最后由 娇赛赛 于 2012-10-1 17:48 编辑
这个问题很简单啊!Iterator是一个接口,我们都说集合里面实现了Iterator其实是在每一种集合的内部都实现了具体的Iterator的子类,这个子类是一个内部类。然后,通过ArrayList的实例对象返回的其实是Iterator具体实现类的对象,你这个表达式=号后面的那个获取到的是其实是al表示的这种集合里面具体的Iterator的子类对象。
建议你去看看ArrayList的源码,下面两个图是ArrayList里面的源码,我给你指出了要点部分
其实每一个具体的集合类中都有一个实现了Iterator的内部类,建议你进源码里面看看,收获肯定会很大的。
别看着前面是Iterator就以为所有的集合返回的iterator对象是相同的,这是面向接口编程,让代码的灵活性更高了而已。
希望能对你有用,谢谢。^^
下面上图:
图一:ArrayList中对iterator()方法的复写:
图二:ArrayList中的Iterator实现类,注意,他是内部类而且是私有的哟,他也只适用于ArrayList。
|