Aka*_*ari 0 java stack-overflow initialization
我有一个代码导致堆栈溢出问题,因为发生了不受控制的递归
public class Flaw {
Flaw() {
System.out.println("There");
}
Flaw obj = new Flaw();
public static void main(String[] args) {
new Flaw();
System.out.println("Hi");
}
}
Run Code Online (Sandbox Code Playgroud)
有人可以向我解释为什么Flaw()构造函数不打印任何东西?
在Flaw构造函数的主体可以执行(执行println语句)之前,会初始化类的实例变量.在您的情况下,这意味着Flaw obj=new Flaw();变量,它创建另一个Flaw实例,触发另一个构造函数调用,依此类推......
无限的构造函数调用链导致StackOverflowError.
| 归档时间: |
|
| 查看次数: |
59 次 |
| 最近记录: |