【问题标题】:Why LinkedList implementation in java has Node nested class as static?为什么Java中的LinkedList实现将Node嵌套类作为静态?
【发布时间】:2015-05-28 15:57:57
【问题描述】:

我开发了自己的 LinkedList 小实现,没有使用 Node 嵌套类作为静态,它工作正常...... 但是 Java 使用 Node 嵌套类作为静态。我没有找到将 Node 嵌套类设为静态的充分理由。

谁能帮我解释一下?

【问题讨论】:

  • 如果LinkedList类中有一个叫做size的成员变量。 Node 类不需要访问它。所以它是静态的。
  • 嵌套类要么是内部的,要么是静态的。不能同时进行。

标签: generics linked-list static-class


【解决方案1】:

嵌套类是其封闭类的成员。非静态嵌套类(内部类)可以访问封闭类的其他成员,即使它们被声明为私有。静态嵌套类无权访问封闭类的其他成员。

静态 嵌套类与其外部类(和其他类)的实例成员交互,就像任何其他顶级类一样。实际上,静态嵌套类在行为上是一个顶级类,为了方便打包,它已经嵌套在另一个顶级类中。

LinkedList.Node 不需要是顶级类,因为它仅由 LinkedList 使用。而且由于它不需要访问 LinkedList 的成员,因此它是静态的是有意义的 - 这是一种更简洁的方法.

【讨论】:

    猜你喜欢
    • 2010-09-20
    • 2015-07-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-10-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多