创建ListIterator对象

问题描述 投票:1回答:2

如果ListIterator是一个接口我怎么能创建一个ListIterator对象,如下所示?

LinkedList<String> myList = new LinkedList<String>();

ListIterator<String> iter = myList.listIterator();
java interface
2个回答
4
投票

如果你看一下Java 8中java.util.LinkedList的实现,你会发现它包含了这个listIterator()实现:

public ListIterator<E> listIterator(int index) {
    checkPositionIndex(index);
    return new ListItr(index);
}

返回的有效内容是实现ListItr接口的内部类ListIterator的实例。在调用ListItr方法之后,客户端必须使用ListIterator接口与listIterator()的这个实例进行交互。


1
投票

您无法创建接口对象。

myList.listIterator();返回ListItr类的对象,而不是ListIterator<E>接口的对象。

private class ListItr extends Itr implements ListIterator<E>{...}

由于ListItr类实现了ListIterator<E>,您可以引用从ListIterator<E>返回的对象。

© www.soinside.com 2019 - 2024. All rights reserved.