我看过这个:
// Returns whether o refers to a Point object with
// the same (x, y) coordinates as this Point object
public boolean equals(Object o) {
if (o instanceof Point) {
Point other = (Point) o;
return x == other.x && y == other.y;
} else {
return false;
}
}
为什么要求 equals 方法的参数采用 Point
对象不是更明智(也更简单)。然后,如果我们尝试将一个 Point 与一个非 Point 进行比较,那么编译器将捕获它。那不是更好吗?
最佳答案
因为这样它就不会覆盖 Object.equals
,这是许多标准库算法用于检查两个对象是否相等的方法。
许多这些算法可以对不同类型的对象进行操作,这使得 equals
有必要将您的对象与任何其他类中的一个进行比较。
关于java - Java equals 方法的良好设计,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35108230/