递归内部静态类如何初始化?

3

如果我理解得正确的话,“非静态”内部类具有特定的生命周期(隐藏的父级“this”引用等),而“静态”生命周期是正常的。 - Jacek Cz
2个回答

5
这里没有递归。
private Node[] next = new Node[26];

该方法不创建任何Node实例,而是创建一个由26个元素的Node[]Node引用数组)组成的数组。所有引用都初始化为null。由数组引用的Node实例必须在其他地方初始化。

另一方面,如果您有一个已初始化成员:

private Node n = new Node ();

如果创建第一个Node实例,将会导致无限递归。


0
在你的代码行中, 首先你要在主方法中使用put(val1,val2)命令插入值。
st.put(key, i);

下面是put(val1,val2)方法的代码行:

 public void put(String key, Value val) {
        if (val == null) delete(key);
        else root = put(root, key, val, 0);
    }

根据这些代码行,递归的else部分调用了另一个put(val1,val2,val3,val4)方法。
下面是put(val1,val2,val3,val4)方法的代码行。
private Node put(Node x, String key, Value val, int d) {
        if (x == null) x = new Node();
        if (d == key.length()) {
            if (x.val == null) n++;
            x.val = val;
            return x;
        }
        char c = key.charAt(d);
        x.next[c] = put(x.next[c], key, val, d+1);
        return x;
    }

在这里,当 x==null 时,使用 new Node(); 初始化 Node 对象。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接