在其中创建静态嵌套类的实例

时间:2015-07-23 06:14:20

标签: java inner-classes nested-class

这与Declaring an instance of a class inside that class

有关

为什么静态内部类Node允许类中的new Node[R]字段,为什么无限递归不会发生在这里?

public class TrieST<Value> {
   private static final int R = 256;        // extended ASCII


   private Node root;      // root of trie
   private int N;          // number of keys in trie

  // R-way trie node
  private static class Node {
    private Object val;
    private Node[] next = new Node[R];
  }
...
}

x = new Node(); //在包含的类中很好,但静态嵌套Node类中的new Node[R]不清楚。

1 个答案:

答案 0 :(得分:3)

该行

private Node[] next = new Node[R];

声明并初始化字段next,这是数组引用(您应该将Node[]读作“Node数组”)。表达式new Node[R]不会创建任何节点,它会创建一个节点数组。所以没有递归。

如果您有

等字段
private Node someNode = new Node();

然后确实会有一个递归,因为每个节点都会创建另一个创建下一个节点的节点,依此类推。