Override equals method gives an error
我是一名计算机工程专业的学生,一周前开始学习
1 2 3 | public static boolean iguales(PuntoImpl<Double> p1, PuntoImpl<Double> p2){ return p1.equals(p2); } |
这是我试图超越平等:
1 2 3 4 5 6 7 8 9 10 11 12 13 | @Override public boolean equals(final Object obj) { if (obj == null || !(obj instanceof PuntoImpl)) return false; PuntoImpl<T> other = (PuntoImpl<T>) obj; if (other.puntoX != this.puntoX) return false; if (other.puntoY != this.puntoY) return false; return true; } |
我试图在坐标x和坐标y中等于两个参数相同的点,但它返回错误。你能帮我找出错误吗?
你在通过引用相等来比较
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | @Override public boolean equals(final Object obj) { if (obj == null || obj.getClass() != getClass()) { return false; } if (obj == this) { return true; } PuntoImpl<T> other = (PuntoImpl<T>) obj; return other.puntoX.equals(this.puntoX) && other.puntoY.equals(this.puntoY); } |
别忘了重写
还要注意,比较浮点值以获得精确的相等性通常会得到意想不到的结果。您可能希望提供一种方法来查找点之间的距离,而不是覆盖