compareTo导致堆栈溢出

时间:2016-11-28 14:15:12

标签: java

我写了一个课程日,现在我想比较一天的两个对象,看看哪一天。

但问题是当我尝试使用compareTo来比较这两天时,它会导致堆栈溢出

这是我创建的日程,请帮助了解我为什么不能使用compareTo。

1

2 个答案:

答案 0 :(得分:4)

你有一个无休止地调用itseld的方法,直到堆栈爆炸。

@Override
public int compareTo(Day another)
{
    return this.compareTo(another); // calls itself until the stack is exhuased
}

您需要做的是比较班级的字段。 e.g。

@Override
public int compareTo(Day d) {
    int cmp = Integer.compare(year, d.year);
    if (cmp == 0) cmp = Integer.compare(month, d.month);
    if (cmp == 0) cmp = Integer.compare(day, d.day);
    return cmp;
}

答案 1 :(得分:0)

你有一个很好的无限递归。

@Override
public int compareTo(Day another)
{

    return this.compareTo(another);
}

这是一个递归调用。您必须实际实现自己的compareTo正文,例如查看日期