【问题标题】:Where are Iterator interface methods hasNext(), next(), remove() defined? Because interfaces never define methods only declareIterator 接口方法 hasNext()、next()、remove() 定义在哪里?因为接口从不定义方法,只声明
【发布时间】:2012-07-06 04:39:46
【问题描述】:

hasNext()、next()、remove() 等迭代器接口方法在哪里定义?接口不定义方法,只声明在其他类中定义的方法。我们如何通过Iterator引用直接访问hasext()、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(迭代器引用)的例子中,我们可以在iter引用中分配任何方法吗?请给我一个代码示例。直到现在我才明白这个概念。

【问题讨论】:

  • 编辑拼写/语法/语法/缩进。

标签: java interface iterator polymorphism


【解决方案1】:

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

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

    ...
}

【讨论】:

  • 需要明确的是,这些细节是故意对您隐藏的,因此您不必担心它们,以便 Java 实现者以后可以在不破坏任何用户的情况下交换不同的实现。跨度>
【解决方案2】:

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

但更一般地说,这里的重点是抽象。这里的设计师专门设计的,让你不用担心这些细节

【讨论】:

    猜你喜欢
    • 2023-03-05
    • 2012-05-02
    • 2015-03-31
    • 1970-01-01
    • 2015-01-15
    • 2011-04-07
    • 1970-01-01
    • 1970-01-01
    • 2016-02-15
    相关资源
    最近更新 更多