在其中创建静态嵌套 class 的实例
Creating instances of static nested class within that
这与Declaring an instance of a class inside that class
有关
为什么静态内部 class 节点允许 class 中的 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 = 新节点(); // 在包含 class 内很好,但在静态嵌套节点 class 内的 new Node[R]
不清楚。
行
private Node[] next = new Node[R];
声明并初始化字段 next
,它是一个 数组引用 (您应该将 Node[]
读作“Node
数组”)。表达式 new Node[R]
不创建任何节点,它创建一个节点数组。所以没有递归。
如果您有一个字段,例如
private Node someNode = new Node();
那么你确实会有一个递归,因为每个节点都会创建另一个节点,这个节点会创建下一个节点,依此类推。
这与Declaring an instance of a class inside that class
有关为什么静态内部 class 节点允许 class 中的 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 = 新节点(); // 在包含 class 内很好,但在静态嵌套节点 class 内的 new Node[R]
不清楚。
行
private Node[] next = new Node[R];
声明并初始化字段 next
,它是一个 数组引用 (您应该将 Node[]
读作“Node
数组”)。表达式 new Node[R]
不创建任何节点,它创建一个节点数组。所以没有递归。
如果您有一个字段,例如
private Node someNode = new Node();
那么你确实会有一个递归,因为每个节点都会创建另一个节点,这个节点会创建下一个节点,依此类推。