java - 接口方法如何在没有主体定义的情况下在 Java 中执行功能?
问题描述
例如, Iterator 接口中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
接口所说的就是实现它的任何类必须做的事情。如何由实现它的类决定,因此完成检查的机制由实现 Iterator 的任何类决定。
在您的示例中,迭代器在
java.util.ArrayList.Itr
推荐阅读
- python - 使用请求和 Beautifulsoup 抓取 Javascript 元素
- javascript - 防止事件在 Angular 中传播
- google-apps-script - 如何不允许编辑,但仍允许隐藏列/行
- git - 通过SSH本地端口转发正常访问时指定gitea服务器Gitea Base URL?
- pandas - 数据帧字典中数据帧的熊猫布尔索引
- ionic-framework - 更改消息或删除确认警报以在 IOS 中使用 facebook 登录(我使用的是 IONIC 5)
- javascript - 如何在同一函数 java 脚本中访问另一个范围内的数组?
- java - WebFlux - 如何检查 Mono
>> 为空返回 404 - cmake - CMake -> nmake:生成的构建似乎不了解 WIN32 或 WIN16
- javascript - 如何在 localhost 中使用 nginx 运行快速服务器?