通过实例调用方法是抛出stackOverFlow错误

时间:2017-02-07 22:58:06

标签: java object stack-overflow

我正在开发以下场景,我创建了一个类的实例并在该实例上调用了一个方法。它最终给了我一个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();
}

3 个答案:

答案 0 :(得分:1)

这会引发StackOverflowException,因为每个test都有一行

test t = new test()

将创建一个新的test,它将再次调用相同的代码行,这将...您可以看到它如何创建无限的调用链。

你应该删除该行。由于您已在主方法中创建了新的test,因此即使它按照您的要求执行也不需要它。

答案 1 :(得分:1)

您在实例化test内的test个实例时遇到了错误的递归调用。它不断实例化新实例,直到没有剩余堆空间。当你有StackOverflowError时,你需要检查的第一件事是你的代码中的任何地方是否重复自我。

答案 2 :(得分:-3)

为什么要在类中创建类的新实例?删除测试t = new test();在Test类中再试一次