如果ListIterator是一个接口我怎么能创建一个ListIterator对象,如下所示?
LinkedList<String> myList = new LinkedList<String>();
ListIterator<String> iter = myList.listIterator();
如果你看一下Java 8中java.util.LinkedList
的实现,你会发现它包含了这个listIterator()
实现:
public ListIterator<E> listIterator(int index) {
checkPositionIndex(index);
return new ListItr(index);
}
返回的有效内容是实现ListItr
接口的内部类ListIterator
的实例。在调用ListItr
方法之后,客户端必须使用ListIterator
接口与listIterator()
的这个实例进行交互。
您无法创建接口对象。
myList.listIterator();
返回ListItr
类的对象,而不是ListIterator<E>
接口的对象。
private class ListItr extends Itr implements ListIterator<E>{...}
由于ListItr
类实现了ListIterator<E>
,您可以引用从ListIterator<E>
返回的对象。