【发布时间】:2017-01-30 09:37:50
【问题描述】:
我刚刚在另一个问题中看到了这段奇怪的代码。我认为这会导致StackOverflowError 被抛出,但它没有......
public class Node {
private Object one;
private Object two;
public static Node NIL = new Node(Node.NIL, Node.NIL);
public Node(Object one, Object two) {
this.one = one;
this.two = two;
}
}
我认为它会抛出一个异常,因为 Node.NIL 引用自身来构建。
我不知道为什么它没有。
【问题讨论】:
-
可能是因为
static但我不确定 -
我所期望的是
NIL字段被构造为它被声明为new Node(null, null),因为当调用构造函数时,Node.NIL尚未设置为任何内容。 -
@khelwood 是的,根据答案,我理解同样的想法。
-
请不要在生产代码中使用它。它可以提供一个很好的琐事,但我认为这是故意混淆。
-
@chi 我不确定,但我在另一个问题上看到了这段代码,我对它如何工作感到困惑。
标签: java stack-overflow