为什么LinkedList中的类节点被定义为静态而不是普通类

这个问题在这里已经有了答案:

  • Java内部类和静态嵌套类23答案

  • 静态嵌套类的实例没有引用嵌套类的实例。 它与将它们放在单独的文件中基本相同,但如果嵌套类的内聚性很高,则将它们作为嵌套类是一个不错的选择。

    非静态嵌套分类需要创建嵌套类的实例,实例绑定到该实例并有权访问它的字段。

    例如,参加这个课程:

    public class Main{
    
      private String aField = "test";
    
      public static void main(String... args) {
    
        StaticExample x1 = new StaticExample();
        System.out.println(x1.getField());
    
    
        //does not compile:
        // NonStaticExample x2 = new NonStaticExample();
    
        Main m1 = new Main();
        NonStaticExample x2 = m1.new NonStaticExample();
        System.out.println(x2.getField());
    
      }
    
    
      private static class StaticExample {
    
        String getField(){
            //does not compile
            return aField;
        }
      }
    
      private class NonStaticExample {
        String getField(){
            return aField;
        }
      }
    

    静态类StaticExample可以直接实例化,但不能访问嵌套类Main的实例字段。 非静态类NonStaticExample需要一个Main实例才能实例化并可以访问实例字段aField

    回到你的LinkedList示例,它基本上是一个设计选择。

    Node实例不需要访问LinkedList的字段,但将它们放入单独的文件中也没有意义,因为Node是LinkedList实现的实现细节,并且在该类之外没有用处。 所以使它成为一个静态嵌套类是最明智的设计选择。

    链接地址: http://www.djcxy.com/p/92015.html

    上一篇: Why class Node in LinkedList defined as static but not normal class

    下一篇: Java: reference outer class in nested static class