Java Basics - 实现在哪里?

时间:2010-08-28 01:16:14

标签: java interface

例如,方法返回List类型的对象。

public List<Foo> bojangles ()
...

某段代码调用方法FooBar.bojangles.iterator();

我是Java的新手,但是我可以告诉他... List是一个接口,因此迭代器方法必须在其他地方实现。在挖掘Java.Util的源代码时,这正是我发现的,一个iterface。 Iterator本身就是一个iterface ...所以在某个地方,我猜测有些类或抽象类实际上具有这些方法的逻辑:next()和hasNext()。但在哪里?

3 个答案:

答案 0 :(得分:3)

看看javadoc for List。它给出了已知实现类的列表。这些类中的每一个都必须实现iterator()方法。

如果你深入研究这些类的源代码,你会发现它们通常在私有嵌套类中实现Iterator接口。

答案 1 :(得分:2)

具体课程是真正的工作。

在Eclipse中,您可以运行 debug 模式:逐步运行代码并观察“变量”视图。然后你就可以找到运行时到底发生了什么。

或者您可以将List的 getClass()打印到控制台,然后检查来源。

答案 2 :(得分:2)

起初你的问题困惑了我,但我想你想说FooBar.bojangles().iterator()。这会更有意义(请注意添加的括号)。

方法bojangles()返回一个实现List的对象。例如,它可能是ArrayListLinkedList

通过在这两个列表中调用iterator()方法,您将返回Iterator。这个Iterator是在AbstractListSimpleListIterator内部类中创建的(这是实际的源代码,在其中您将找到您正在寻找的实现)。

因此,通过调用iterator()方法,您最有可能获得SimpleListIterator。虽然在所有情况下可能都不是这样,但在大多数情况下都是如此。