Iterator接口方法在哪里有hasNext(),next(),remove()定义?因为接口永远不会定义方法只声明

时间:2012-07-05 18:07:00

标签: java interface iterator polymorphism

Iterator接口方法在哪里定义了hasNext(),next(),remove()等?接口不定义方法,只声明在其他类中定义的方法。我们如何通过Iterator引用直接访问hasnext(),next()等方法? 例如:

List l = new LinkedList();
l.add(1);
l.add(2); 
Iterator iter = l.iterator();
while(iter.hasNext())
{
    Object o = iter.next();
    System.out.println(o);
}

在上面的示例中,使用引用iter(Iterator引用)可以在iter引用中分配任何方法吗?请给我一个代码示例。直到现在我都无法理解这个概念。

2 个答案:

答案 0 :(得分:4)

如果您的问题是:LinkedList迭代器的实现在哪里,答案是:  它被实现为LinkedList类的私有内部类:

private class ListItr implements ListIterator<E> {
    private Node<E> lastReturned = null;
    private Node<E> next;
    private int nextIndex;
    private int expectedModCount = modCount;

    ...
}

答案 1 :(得分:2)

你知道你可以通过查看可以下载的java源代码自己找到答案,或者你可以打印出你在这里找到的迭代器的类。

但更一般地说,这一点是抽象。这里的设计师专门设计,因此您不必担心这些细节