自引用是构造链表的基础
Java自引用如下:
class Node{
int data;
Node node;
}
就是在类里定义一个指向自身的引用,但是这里有一个陷阱,我们把代码改为如下:
class Node{
int data;
Node node = new Node();
}
当我们创建这个类的对象时,会抛出java.lang.StackOverflowError,也就是栈溢出。为什么会栈溢出呢?这是因为,当我们创建一个对象时,会先初始化成员变量。我们这里在初始化成员变量时,又会去创建一个相同类型的对象,如此陷入了死循环,最后导致栈溢出。