Ich sah gerade seltsam Stück Code in einer anderen Frage. Ich dachte, es in einem StackOverflowError
geworfen würde, aber es funktioniert nicht ...Warum wirft diese Anweisung keinen 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;
}
}
Ich dachte, es explodieren würde, wegen der Node.NIL
Referenzierung selbst zu bauen.
Ich kann nicht herausfinden, warum es nicht geht.
wahrscheinlich wegen 'static', aber ich bin nicht sicher – XtremeBaumer
Was ich erwarten würde ist, dass das 'NIL'-Feld so konstruiert ist, wie es als' neuer Knoten (null, null)' deklariert wurde, weil der Konstruktor aufgerufen wird , 'Node.NIL' wurde noch nicht auf etwas gesetzt. – khelwood
@Khelwood Yep, auf der Grundlage der Antwort habe ich das gleiche Denken verstanden. –