Sib*_*tro -2 java stack-overflow
为什么在同一个类的实例中创建非静态实例时会发生堆栈溢出错误?
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引用时,在第一种情况下发生循环依赖
谁能澄清整个事情?为什么静态引用循环依赖不会发生?
当instanceObj非静态时,用于ObjectTest创建另一个的构造函数ObjectTest创建另一个ObjectTest,等等无限制.当它是静态的时,只instanceObj为整个ObjectTest类创建一个...... 毕竟它是静态的.:)当instanceObj是静态的并且ObjectTest创建它时,它已经有静态的instanceObj,它本身就是.它需要一些时间来习惯,它可能有助于在纸上完成它并确保你清楚static关键字的含义.