得到堆栈溢出错误,我不确定为什么

时间:2012-12-01 18:42:53

标签: java stack-overflow

编辑:

主要方法......

创建一个新玩家。

玩家类......

创建一个hand实例。

手工课......

创建一个arraylist

这就是全部。它非常简单

public class Player 
{
/*------------------------
 * instantiating variable
 -----------------------*/
protected Hand hand;
protected boolean active = false;

/*------------
 * constructor
 -----------*/
    public Player()
{
    hand = new Hand();
    hand.setSize(5);
}



public class Hand extends Player
    {
/*-----------------------------------------
 * variable declaration
 ----------------------------------------*/
ArrayList <Card> hand;
protected int size;
Card temp;

     /*------------------------------------------
 * constructor
 * creates arraylist of cards to keep in hand
 ------------------------------------------*/
public Hand()
{
    hand = new ArrayList<Card>();
}

/*-------------------------------
 * sets the size of the max hand
 ------------------------------*/
public void setSize(int newSize)
{
    size = newSize;

}

编辑:错误是:

线程“main”中的异常java.lang.StackOverflowError

at Player.<init>(Player.java:19)

at Hand.<init>(Hand.java:21)
玩家中的第19行是“公共玩家()”

Hand的第21行是“public Hand()”

仅供参考

1 个答案:

答案 0 :(得分:6)

Hand扩展Player,因此包含所有Player个数据成员,包括

protected Hand hand;

要初始化这些继承的成员,Hand的构造函数会隐式调用Player

  1. 您调用Hand的构造函数。
  2. 它调用Player的构造函数。
  3. Player的构造函数执行new Hand(),循环无限期地重复,直到你的堆栈空间不足为止。