java Iterator的接口的方法为什么可以直接调用?接口的方法都是抽象的,为什么没经实例化既可以使用了。

解决方案 »

  1.   

    你看见的应该是实现了Iterator接口的类的对象在使用那些方法. 接口不能实例化,没有对象,谁用它的方法呢?
      

  2.   

    肯定有实例化呀。for example public static void main(String args[]){
    List<String> list = new ArrayList<String>();
    list.add("1");
    list.add("2");
    for(Iterator it=list.iterator();it.hasNext();){
    System.out.println(it.next());
    }
    }
    看下ArrayList,public class ArrayList<E> extends AbstractList<E>
            implements List<E>, RandomAccess, Cloneable, java.io.Serializable
    看下AbstractList的Iterator方法
     public Iterator<E> iterator() {
    return new Itr();
        }  private class Itr implements Iterator<E> 
      

  3.   

    同意2楼的,集合类如ArrayList都会实现自己的Iterator,私有的。
      

  4.   

    xxx.iterator(); //得到的是xxx类型的一个Iterator对应的一个实现类的实例的
      

  5.   

    iterator是一个通用接口
    每个集合给了他实现
    这样每个集合就可以直接调用,并传进去进行迭代输出了