gpt4 book ai didi

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

转载 作者:搜寻专家 更新时间:2023-11-01 01:43:08 26 4
gpt4 key购买 nike

我是 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/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com