【发布时间】:2016-07-10 04:09:54
【问题描述】:
我对以下与 Java OOP 和 Java API/源代码安排有关的情况感到困惑。基于Oracle's Java 8 API,hasNext() 是一个抽象方法,但是我找不到hasNext() 是在哪里实现的。我读到私有内部类用于在每个 Collection 类中实现不同的迭代器,但没有关于如何找到实现位置的更多信息。一些用户建议我将 Java JRE 1.8 源代码添加到我的 Eclipse IDE 中,但我只能看到 boolean hasNext(); 在 Iterator 接口中声明为抽象方法。
如下例所示,迭代器 obj 直接使用 hasNext() 没有实现它。但是,我被告知您需要在接口中实现抽象方法。
我的问题:
(1) 如何找到抽象方法hasNext()的实现?
(2) 一条评论说我可以找到代码here。在 ArrayList 类中实现 hasNext() 的原因是什么,但将 hasNext() 标记为抽象方法?以这种方式查找 hasNext() 实现并不直观。
List<String> list = new ArrayList<String>();
list.add("item-1");
list.add("item-2");
list.add("item-3");
Iterator<String> it = list.iterator();
while (it.hasNext()) {
System.out.println(it.next());
}
【问题讨论】:
-
您使用的是什么 IDE?在 IntelliJ IDEA 中,您可以选择一个方法,按 CTRL 并单击鼠标左键,它会将您直接带到代码中编写该方法的位置。
-
听起来你想问“ArrayList's
Iterator.hasNext()在哪里实现。如果是这样(你正在寻找一种特别的实现)它会很有帮助在问题中这么说。 -
如果你使用 eclipse 附加 java 源代码mkyong.com/eclipse/eclipse-how-to-attach-jdk-source-code
-
我使用VIM,但我可以下载上面提到的IDE。谢谢,伙计们!
标签: java oop collections interface polymorphism