我应该创建自己的equals()方法,它覆盖父类的equals(方法)。该方法接受一个Counter对象作为它的参数。在下面的代码中,我想要一个简单的方法来确定Counter对象参数是否等于Counter类的当前实例,如果有意义的话。我通过逐一比较每个对象的字段,在下面的代码中实现了这一点,但我想要一个更简单的方法来做到这一点。看起来像这样的东西会很好:“result =(otherCounter == new Counter(min,max)?true:false);”,但我知道这是不对的,并且出现错误。如何比较两个Counter对象中变量的相等性,如果Counter对象c1和c2不同,那么c1.equals(c2)将为false?如何比较同一类型的两个对象的“状态”?
public boolean equals(Object otherObject)
{
boolean result = true;
if (otherObject instanceof Counter)
{
Counter otherCounter = (Counter)otherObject;
result = (otherCounter.min == this.min) &&
(otherCounter.max == this.max) &&
(otherCounter.currentCount == this.currentCount) &&
(otherCounter.rolloverOccurrence == this.rolloverOccurrence) ? true : false;
}
return result;
}
您应该将'result'初始化为'false',因为如果它不是对象的实例,那么它就不相等。我会说你目前的实现很好,当然,这是很长时间的啰嗦,因为这是你得到的最好结果 – MadProgrammer 2014-09-05 05:30:26
不是问题的一部分,但是当你重写equals时不要忘记重写hashCode ... – shlomi33 2014-09-05 05:57:48