java.iterator

这是arrayList中的迭代器的源码

public Iterator iterator() {
return new Itr();
}
private class Itr implements Iterator {
.....
}

在外界创建Arraylist对象并调用iterator
ArrayList list = new ArrayList();
Iterator iterator = list.iterator();
调用方法list.iterator()时返回的类型为什么不是内部类的Itr而是Iterator,方法返回的不应该是Itr的对象吗?

Iterator 是接口,list.iterator(); 返回值,用Iterator接口接收,它的实际类型还是内部的Itr,因为ArrayList内部的Itr是ArrayList内部私有,外部不能直接使用,但外部可以使用对应接口类Iterator

这就是迭代器接口的约定。