例如,迭代器接口中的hasNext()
和next()
方法通过检查集合中是否存在下一行/对象并分别返回下一个对象来执行其功能,而无需重写这些方法。
请帮助我理解。
下面的示例代码片段:
import java.io.*;
import java.util.*;
class Test {
public static void main(String[] args) {
ArrayList<String> list = new ArrayList<String>();
list.add("A");
list.add("B");
list.add("C");
list.add("D");
list.add("E");
// Iterator to traverse the list
Iterator iterator = list.iterator();
System.out.println("List elements : ");
while (iterator.hasNext())
System.out.print(iterator.next() + " ");
System.out.println();
}
}
接口方法不执行函数,这就是接口的全部意义。它们指定了一个协定,实现它们的类必须满足该协定。
阅读Iterator#hasNext
的文档:
* Returns {@code true} if the iteration has more elements.
* (In other words, returns {@code true} if {@link #next} would
* return an element rather than throwing an exception.)
*
* @return {@code true} if the iteration has more elements
接口所说的只是实现它的任何类必须做的事情。如何由实现它的类决定,因此完成检查的机制留给实现迭代器的任何类。
在您的示例中,迭代器在
java.util.ArrayList.Itr