我写了一个课程日,现在我想比较一天的两个对象,看看哪一天。
但问题是当我尝试使用compareTo来比较这两天时,它会导致堆栈溢出
这是我创建的日程,请帮助了解我为什么不能使用compareTo。
1
答案 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
正文,例如查看日期