所以我的equals类有问题
public boolean equals(Object other) {
if (other.equals(this.numerator) && other.equals(this.denominator))
return true;
else
return false;
}
它给出了9/2 eq 9/2 = false的结果。
(我的其他裁判代码) https://gist.github.com/anonymous/6604f427cc9d17391478
我做错了什么?
我编辑了代码但仍然处理了boolean和int
的错误public boolean equals(Object other) {
if (other.equals(this.numerator) == getNumerator() && other.equals(this.denominator)== getDenominator())
return true;
else
return false;
}
答案 0 :(得分:2)
在实施equals
时,在检查对象是否相等之前,您应该考虑下一个场景:
other
对象为null
other
对象是不同类型的实例当检查两个对象之间的相等性时,您应该考虑比较中涉及的每个字段的 nullness
。在大多数IDE中,equals
可以在eclipse中自动生成:
Alt + Shift + s - >生成hashCode()和equals()
下一个是由eclipse生成的:
@Override
public boolean equals(Object obj) {
if (this == obj)
return true;
if (obj == null)
return false;
if (getClass() != obj.getClass())
return false;
A other = (A) obj;
if (denominator == null) {
if (other.denominator != null)
return false;
} else if (!denominator.equals(other.denominator))
return false;
if (numerator == null) {
if (other.numerator != null)
return false;
} else if (!numerator.equals(other.numerator))
return false;
return true;
}
答案 1 :(得分:0)
return
(other.numerator.equals(this.numerator)
&&
other.denominator.equals(this.denominator))
但是,这并不考虑1/2 == 2/4。