java - Java equals 方法的良好设计

标签 java

我看过这个:

// 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/

相关文章:

java - 在 JSP 标签之间传递动态属性?

java - 从字符串中删除随机表达式

java - 在 libgdx 中,如何为 box2d Body 对象添加摩擦力?

javax.comm 以及如何修复 java.lang.NoClassDefFoundError

java - 多线程(多请求)调用的Spring @Transactional方法

java - 为什么这个 pojo 程序 "readline"总是返回 null?

Java 格式化日期

java - Maven:maven 构建中的类下缺少文件

java - 求交错字符串递归算法的计算复杂度

java - HashSet cannot be converted to String error with instanceof 运算符