如果ListIterator是一个接口,我怎么能像下面那样创建一个ListIterator对象?
LinkedList<String> myList = new LinkedList<String>();
ListIterator<String> iter = myList.listIterator();
答案 0 :(得分: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 :(得分:1)
您无法创建界面对象。
myList.listIterator();
会返回ListItr
类的对象,而不是ListIterator<E>
接口的对象。
private class ListItr extends Itr implements ListIterator<E>{...}
当ListItr
类实现ListIterator<E>
时,您可以从ListIterator<E>
引用返回的对象。