LinkedList<String> names=new LinkedList<>();
ListIterator<String> iterator=names.listIterator();
然后我们可以使用iterator.hasnext()
,iterator.next()
等执行操作
如果ListIterator
是一个接口,我们如何访问其引用变量迭代器上的方法,因为接口应该只有
抽象方法?
names.listIterator()
是否返回某个类的对象引用?如果是这样,它返回哪个类对象引用?有人可以澄清一下吗?
答案 0 :(得分:5)
ListIterator是参考的类型。引用点将是实现接口的类的对象。在Oracle的实现中,该类是嵌套在LinkedList
中的私有类,称为ListItr.
答案 1 :(得分:3)
如果您在某个对象上调用names.listIterator()
,它会返回一个非类型的对象,但 的类型实现Iterator接口。然后你将它称为迭代器,因为Java(就像任何好的面向对象语言一样)允许多态,这意味着只要你知道有问题的对象实现了接口的方法,你可以将该对象称为该界面的类型。
答案 2 :(得分:2)
names.listIterator()是否返回某个类的对象引用?
是。它是。它的类型为ListIterator
以下是该方法的实现
public ListIterator<E> listIterator(final int index) {
rangeCheckForAdd(index);
return new ListItr(index);
}
其中ListItr是LinkedList
中定义的类private class ListItr extends Itr implements ListIterator<E> {