例如,方法返回List类型的对象。
public List<Foo> bojangles ()
...
某段代码调用方法FooBar.bojangles.iterator();
我是Java的新手,但是我可以告诉他... List是一个接口,因此迭代器方法必须在其他地方实现。在挖掘Java.Util的源代码时,这正是我发现的,一个iterface。 Iterator本身就是一个iterface ...所以在某个地方,我猜测有些类或抽象类实际上具有这些方法的逻辑:next()和hasNext()。但在哪里?
答案 0 :(得分:3)
看看javadoc for List。它给出了已知实现类的列表。这些类中的每一个都必须实现iterator()方法。
如果你深入研究这些类的源代码,你会发现它们通常在私有嵌套类中实现Iterator接口。
答案 1 :(得分:2)
具体课程是真正的工作。
在Eclipse中,您可以运行 debug 模式:逐步运行代码并观察“变量”视图。然后你就可以找到运行时到底发生了什么。
或者您可以将List的 getClass()打印到控制台,然后检查来源。
答案 2 :(得分:2)
起初你的问题困惑了我,但我想你想说FooBar.bojangles().iterator()
。这会更有意义(请注意添加的括号)。
方法bojangles()
返回一个实现List
的对象。例如,它可能是ArrayList
或LinkedList
。
通过在这两个列表中调用iterator()
方法,您将返回Iterator
。这个Iterator
是在AbstractList
的SimpleListIterator
内部类中创建的(这是实际的源代码,在其中您将找到您正在寻找的实现)。
因此,通过调用iterator()
方法,您最有可能获得SimpleListIterator
。虽然在所有情况下可能都不是这样,但在大多数情况下都是如此。