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

calling a method through an instance is throwing a stackOverFlow Error

我正在处理以下场景,我创建了一个 class 的实例并在该 instance.It 上调用了一个方法,结果给我一个 Whosebug 错误。我的代码:

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();
}

这会抛出一个 WhosebugException 因为每个 test 都有行

test t = new test()

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

您应该只删除该行。即使它做了你想要的,也不需要它,因为你已经在你的 main 方法中创建了一个新的 test

为什么要在 class 中创建 class 的新实例?删除测试 t = new test();进入测试 class 并重试

在 class test 中实例化 test 个实例时,您的 递归调用 有问题。它不断实例化新实例,直到没有堆 space 剩余。当你有 WhosebugError 时,你需要检查的第一件事是代码中的任何地方是否重复调用了自身。