Я только что видел это weird часть кода в другом вопросе. Я думал, что это приведет к StackOverflowError
броска, но это не ...Почему этот оператор не бросает 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', но я не уверен – XtremeBaumer
Что бы я ожидал, так это то, что поле' NIL' построено так, как оно было объявлено как 'new Node (null, null)', потому что когда вызывается конструктор , 'Node.NIL' еще не установлен. – khelwood
@khelwood yep, основанный на ответе, я понял то же самое. –