通过实例调用方法会抛出 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
时,你需要检查的第一件事是代码中的任何地方是否重复调用了自身。
我正在处理以下场景,我创建了一个 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
时,你需要检查的第一件事是代码中的任何地方是否重复调用了自身。