2013-02-25 86 views

回答

2

我认为你必须在Java静态和非静态类与静态和非静态成员之间的差异稍有分歧:静态和非静态类之间的区别在于非静态类有一个隐式成员,持有对外部类的引用,而静态类没有这种隐式引用。两种内部类都在所有实例之间共享;它的实例与其外部类的实例关联的内部类。

这正是你想要的迭代器:每个迭代器连接到它迭代的集合的实例,所以通过使内部类非静态地隐含地保存这个引用是非常合理的。

+0

我尝试在定义中添加“static”,并且它没有报告任何语法错误。在这种情况下,两者会有相同的效果? – user697911 2013-02-25 02:59:32

+0

@ user697911您是否在ListItr类的完整源代码上尝试过它,或者只是在存根上尝试它?如果完整的源代码已经编译,我会感到很惊讶。 – dasblinkenlight 2013-02-25 03:00:52

+0

Eclipse中的完整源代码LinkedList.java。你也可以试试。 – user697911 2013-02-25 03:01:34

0

首先,ListItr的数据结构,它的一个内部类。 ListIterator实例不会自动共享此类的实例,而且它们不应该!作为内部类ListItr可以访问其封闭的类数据,这对于在数据集合上实现迭代器很有用。一个静态类不是有这个级别的访问,因此会作为一个迭代器的实现更穷的选择。

相关问题