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