各位大哥:
小弟有一事不名,
集成接口里iterator()的方法是怎么实现的?
接口里的方法应该都是抽象的,那么在实际使用中,如下:
ArrayList a=new ArrayList();
Iterator i = a.iterator();
while(i.hasNext())
{
Integer intObj=(Integer)i.next();
sum+=intObj.intValue();
}
那么,Iterator i = a.iterator();这一句的iterator()方法是怎么实现的呢,或者说是谁实现的呢!

解决方案 »

  1.   

    对于ArrayList来说
    其超类AbstractList中有一个内部类
    private class Itr implements Iterator<E>
    他实现了Iterator接口
    然后通过
    public Iterator<E> iterator() {
    return new Itr();
        }
    返回这个内部类的对象.
    这个内部类可以对AbstractList的成员变量,方法进行操作.对于不同的容器,这个内部类的实现各不相同,
    而其存在的目的是实现通用的遍历容器的方法具体的可以看看各个容器实现的源码
      

  2.   

    ArrayList a=new ArrayList(); 这句通常这样写: List a=new ArrayList(); 
    List 接口是定义为可以被iterate的,所以所有implements List 的class 都要去实现它。也是就是说要写一个Iterator 的实现。 你上边用到的就是ArrayList这个class实现的。 ArrayList实现起来比较简单,也就是让它的Iterator记住当前的位置,然后每一次用next()就把当前的element返回然后增加当前的位置。 hasNext()也就是去比较一下当前位置与array的长度。 你高兴也可以自己写一个ArrayList,不难。
      

  3.   

    C++ 的generic programming 全是讲这些东西