比方说,我有
public class Foo<Game> extends ArrayList<Game>{
}
我希望迭代它的元素。我知道我可以使用带迭代器的for循环。但尝试类似的事情:
for(Game g : super)
似乎不起作用。这是神秘的(至少对我而言)因为super是对ArrayList<Game>
类型的对象的引用,它应该能够被迭代。是否有一些我缺少的语法?
编辑:我将Foo类型添加到类声明中。
答案 0 :(得分:5)
这是神秘的(至少对我而言)因为super是对
ArrayList<Game>
类型的对象的引用[...]
super
不是一个对象。如果您实例化一个继承自另一个类的类,则不会获得两个对象(this
和super
),只有一个实例。 (哎呀,深度继承层次结构变得笨拙!)super
允许你从超级类(再次,不是一个对象)访问方法在方法实现中使用它们。这些super
方法仍然在this
对象的上下文中执行,但现在该对象属于子类类型。但这完全没问题,而且它是多态性的基础之一。
this
是一个对象:它是Foo
的一个实例,因为Foo
继承自ArrayList<Game>
,它也是ArrayList<Game>
,因此实现{ {1}}。因此,您可以迭代Iterable<Game>
。
因此,您正在寻找:
this