为什么在同一个类的实例中创建非静态实例时会发生堆栈溢出错误?
public class ObjectTest {
ObjectTest instanceObj = new ObjectTest("Outside");
public ObjectTest(String s) {
System.out.println(s);
}
public static void main(String[] args) {
ObjectTest localObj = new ObjectTest("Inside");
}
}
Run Code Online (Sandbox Code Playgroud)
但是通过以下修改可以解决问题:
static ObjectTest instanceObj = new ObjectTest("Outside");
Run Code Online (Sandbox Code Playgroud)
可以理解的是,在将新对象分配给instanceObj引用时,在第一种情况下发生循环依赖
谁能澄清整个事情?为什么静态引用循环依赖不会发生?