java - java中iterator()方法的返回类型

标签 java methods collections iterator return-type

我是 Java 新手,正在学习中。 我需要得到有效理论支持的以下问题的答案。 考虑以下行-

Iterator itr = al.iterator(); 

al 是 ArrayList(类)类型的一些集合对象。 我想知道这里的返回类型是什么

al.iterator()

它不一定是原始数据类型,那么它可能是一个对象,但由于每个对象都属于一个类,所以它属于哪个类。文档和书籍等说它有 Iterator 的返回类型。但是 Iterator 是一个接口(interface)。另一方面,我们说接口(interface)不能有直接对象。尽管接口(interface)变量可以引用一个或多个实现它的类的对象。

-

所以上面的语法是正确的(因为 Iterator 变量 itr 可以用来引用某个实现它的类的对象)。但实际上它是哪个类的对象?并且可以用该类的引用变量替换 itr 不会导致错误(我已经尝试在上面的行中用 ArrayList 类的引用变量替换 itr 但这会导致错误) .我也经常以泛型形式使用这种语法,但不知道这背后的理论。我想我在这里缺乏一个非常基本的概念。请指正。

最佳答案

I want to know what is here the return type of al.iterator()

你不应该关心。方法返回迭代器的具体实现并不重要,只是它返回一个迭代器。您可以调用 next、hasNext 和 remove,或者使用 for-each 循环进行迭代,而无需知道它恰好是 ArrayList.Itr 或任何实现。

假设在 ArrayList 上工作的 Java 开发人员想要将他们的迭代器实现重命名为 ArrayListIterator 而不是他们现在所称的任何名称。如果您的代码依赖于了解确切的 Iterator 实现,那么您将不得不更改您的代码来处理您甚至不应该看到的 ArrayList 内部更改。

关于java - java中iterator()方法的返回类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23038578/

相关文章:

java - 如何为每个子类创建一个 ArrayList?

c++ - 常量成员函数

c# - 如何测试 IEnumerable<int>

java - 根据用户选择/输入从集合中过滤对象

java - 使用 webdrivermanager-x.x.x.jar 时不下载/初始化浏览器驱动程序(没有 Maven)

Java使用RSA从模数和指数生成 key 进行加密/解密

java - 网址响应时间

javascript - Angular v5 英雄教程中 hero.service.ts 的 deleteHero 方法中的管道编号( | 编号)是什么

java - 获取一个重复操作的按钮

scala - 是否可以从 PriorityQueue 中删除元素?