我得到一个递归调用相同错误的StackOverflowError

时间:2015-03-19 00:53:02

标签: java oop compiler-errors stack-overflow

我不确定我的程序有什么问题。基本上我只想做一个班级的对象。然后该对象应在其构造函数中创建另一个对象。但是当我从第一个对象的构造函数内部创建对象时,我收到错误:

  

“线程中的异常”主“java.lang.StackOverflowError at   安装程序。(Setup.java:31)at   GameController。(GameController.java:30)“

错误的这一部分会一直重复,直到我的运行时“错误”框已满:

  

“在安装程序。(Setup.java:31)
  在GameController。(GameController.java:30)“

这是我的代码:(在main中创建的对象)

public class GameController {
GameController() {   
Setup Set = new Setup(); //Refers to error happening here.

(设置对象类)

public class Setup extends GameController {
Setup() { //Refers to error happening here.

我不介意以不同的方式处理我的代码,但我想知道我做错了什么,所以我可以在将来做到。

1 个答案:

答案 0 :(得分:6)

没有安装程序扩展GameController!这就是造成不必要的递归的原因,可能没有必要。

当你创建一个Setup对象时,它会调用GameController的构造函数,它会创建一个Setup对象,然后调用GameController的构造函数,然后创建一个Setup对象,然后调用GameController的构造函数,然后创建一个Setup对象,然后调用GameController的构造函数,然后调用GameController的构造函数的Setup对象,该构造函数创建一个Setup对象,然后调用GameController的构造函数,然后创建一个Setup对象,然后调用....

ad无限。

我怀疑你在这里使用继承是出于不恰当的原因,所以再一次,只是没有安装扩展GameController,这个问题应该修复。


关于,

  

哦,它不会编译。

不可能。如果它没有编译并运行,则无法看到此异常。