我正在阅读 LinkedList 的 ListIterator 的 Java 文档,它被定义为非静态内部类。为什么它不是静态类?这个数据结构不应该在 LinkedList 的所有实例之间共享吗?我很困惑。谢谢。
private class ListItr implements ListIterator<E>{
}
最佳答案
我认为你对Java中静态和非静态类与静态和非静态成员之间的区别有一个轻微的误解:静态和非静态类之间的区别在于非静态类有一个隐式的成员持有对外部类的引用,而静态类没有这样的隐式引用。这两种内部类都在所有实例之间共享;内部类的实例与外部类的实例相关联。
这正是您想要的迭代器:每个迭代器都连接到它迭代的集合的实例,因此通过使内部类成为非静态来隐式保留此引用是非常有意义的。
关于java - 为什么不在 LinkedList 中定义 ListIterator 的静态类?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15059317/