gpt4 book ai didi

java - 如果我有 ArrayList 的子类,我可以在不调用 super.iterator() 的情况下迭代其元素吗?

转载 作者:行者123 更新时间:2023-12-01 17:11:10 25 4
gpt4 key购买 nike

比如说,我有

public class Foo<Game> extends ArrayList<Game>{

}

我想迭代它的元素。我知道我可以使用 for 循环及其迭代器。但尝试类似的事情:

for(Game g : super)

似乎不起作用。这很神秘(至少对我来说),因为 super 是对 ArrayList<Game> 类型的对象的引用。应该能够迭代。我是否缺少一些语法?

编辑:我将 Foo 类型添加到类声明中。

最佳答案

This is mysterious(at least to me) because super is a reference to an object of type ArrayList<Game> [...]

super不是一个对象。如果实例化一个从另一个类继承的类,则不会获得两个对象( thissuper ),而只有一个实例。 (哎呀,由于继承层次结构很深,它会变得笨拙!) super允许您从 super (同样,不是对象)访问方法并在方法实现中使用它们。那些super方法仍然在 this 的上下文中执行对象,但现在该对象是子类类型。不过这完全没问题,而且它是多态性的基础之一。

this是一个对象:它是 Foo 的实例并且,因为 Foo继承自ArrayList<Game> ,它也是一个ArrayList<Game>从而实现Iterable<Game> 。因此,您可以迭代 this .

因此,您正在寻找:

for (Game g : this) { ... }

关于java - 如果我有 ArrayList 的子类,我可以在不调用 super.iterator() 的情况下迭代其元素吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23770886/

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