listIterator如何工作

时间:2015-09-02 15:18:04

标签: java

LinkedList<String> names=new LinkedList<>();
ListIterator<String> iterator=names.listIterator();

然后我们可以使用iterator.hasnext()iterator.next()等执行操作

如果ListIterator是一个接口,我们如何访问其引用变量迭代器上的方法,因为接口应该只有 抽象方法?

names.listIterator()是否返回某个类的对象引用?如果是这样,它返回哪个类对象引用?有人可以澄清一下吗?

3 个答案:

答案 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> {