java - 为什么不在 LinkedList 中定义 ListIterator 的静态类?

标签 java static-members listiterator

我正在阅读 LinkedList 的 ListIterator 的 Java 文档,它被定义为非静态内部类。为什么它不是静态类?这个数据结构不应该在 LinkedList 的所有实例之间共享吗?我很困惑。谢谢。

private class ListItr implements ListIterator<E>{

}

最佳答案

我认为你对Java中静态和非静态类与静态和非静态成员之间的区别有一个轻微的误解:静态和非静态类之间的区别在于非静态类有一个隐式的成员持有对外部类的引用,而静态类没有这样的隐式引用。这两种内部类都在所有实例之间共享;内部类的实例与外部类的实例相关联。

这正是您想要的迭代器:每个迭代器都连接到它迭代的集合的实例,因此通过使内部类成为非静态来隐式保留此引用是非常有意义的。

关于java - 为什么不在 LinkedList 中定义 ListIterator 的静态类?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15059317/

相关文章:

multithreading - 具有静态互斥量和线程安全性的静态成员

c# - 如果函数中的字段是静态的,则将函数声明为静态或非静态会有什么不同吗?

c++ - Iterator de-reference then "."operator versus. "->"运算符(operator)

java - JPanel 只显示矩形而不显示 JButton

java - 如何在 6 次读取 6 个整数后停止扫描仪?

java - 如何在intellij中纠正java多行中单个语句的缩进

java - ListIterator 的 previous() 方法

java - URL 作为 Java 对象中的字段

java - 为什么可以访问嵌套静态类的成员?

java - 在迭代列表时将元素添加到列表中。 ( java )