如果ListIterator是一个接口,为什么我可以创建如下所示的ListIterator对象?
LinkedList<String> myList = new LinkedList<String>();
ListIterator<String> iter = myList.listIterator();发布于 2018-03-07 19:32:22
如果您查看Java8中的java.util.LinkedList实现,您将看到它包含以下listIterator()实现:
public ListIterator<E> listIterator(int index) {
checkPositionIndex(index);
return new ListItr(index);
}实际上,返回的是实现ListIterator接口的内部类ListItr的实例。在调用listIterator()方法之后,客户端必须使用ListIterator接口与此ListItr实例进行交互。
发布于 2018-03-07 19:36:51
不能创建接口的对象。
myList.listIterator(); 返回 ListItr 类的对象,而不是ListIterator<E>接口的对象。
private class ListItr extends Itr implements ListIterator<E>{...}因为ListItr类实现了ListIterator<E>,所以您可以引用从ListIterator<E>返回的对象。
https://stackoverflow.com/questions/49150760
复制相似问题