如何在外部 class 中声明一个实例变量(类型为内部 class)?

How can I declare an instance variable(of type inner class) in the outer class?

我想在定义内部 class 之前在外部 class 声明一个实例,但在代码中引发了问题:

class LinkedList 
{ 
    Node head; //line3

    class Node //line5
    { 
        int data; 
        Node next; 
        Node(int d) 
        { 
            data = d; 
            next = null; 
        } 
    }


    public void push(int new_data) 
        { 

            Node new_node = new Node(new_data); //line 20

            new_node.next = head; 

            head = new_node; 
        } 
  1. 在第 3 行中,我很困惑为什么在第 5 行中定义节点 class 之前,您能够创建 Node 类型的实例变量。
  2. 此外,假设我想在 Linkedlist 类型的节点 class 中创建一个实例变量,它会让我这样做吗?
  3. 第20行的push方法中,在创建新的Node实例时,是否也创建了新的LinkedList实例,因为Node是LinkedList的内部class?

class LikendList 在编译时首先编译它检查节点 class 可以在此 class 外部或内部然后节点 class 是之后编译 LikendList 将被编译。如果你在节点内给出一个 LikendList 它会做同样的事情并编译​​但是在 运行 时间你可能会遇到循环引用错误

您可以这样做,因为 Java 编译器 聪明 ,并且可以向前看。

这也是为什么你可以在单独的源文件中有两个 类 AB,其中 A 指的是 B,而 B指的是A,也就是一个circular dependency,编译就ok了,只要你同时编译。

您甚至不必在编译时同时命名 类。当编译器正在编译 A 并看到对 B 的引用时,它会自动查找 B 的源代码并在同一个编译作业中对其进行编译。这样,编译器可以在解析成员声明之前提前知道存在哪些类型。