我正在开发以下场景,我创建了一个类的实例并在该实例上调用了一个方法。它最终给了我一个stackOverFlow错误。我的代码:
public class test {
test t = new test();
public void show(){
System.out.println("df");
}
public static void main(String[] args) {
// TODO Auto-generated method stub
test t = new test();
t.show();
}
答案 0 :(得分:1)
这会引发StackOverflowException
,因为每个test
都有一行
test t = new test()
将创建一个新的test
,它将再次调用相同的代码行,这将...您可以看到它如何创建无限的调用链。
你应该删除该行。由于您已在主方法中创建了新的test
,因此即使它按照您的要求执行也不需要它。
答案 1 :(得分:1)
您在实例化test
内的test
个实例时遇到了错误的递归调用。它不断实例化新实例,直到没有剩余堆空间。当你有StackOverflowError
时,你需要检查的第一件事是你的代码中的任何地方是否重复自我。
答案 2 :(得分:-3)
为什么要在类中创建类的新实例?删除测试t = new test();在Test类中再试一次