java - 重写 equals 方法问题

标签 java overriding

我正在尝试创建一个有理数类并覆盖 equals 和 hash code 方法。但如果分子和分母不同,则我的等式会返回正确的情况,即分子和分母不同。知道是什么原因造成的吗?

public boolean equals(Object rhs) {
    if (this == rhs){
        return true;
    }
    if (rhs == null){
        return false;
    }
    if (!(rhs instanceof Rational)){
        return false;
    }
    Rational other = (Rational) rhs;
    if (denom == other.denom){
        if (num == other.num);{
            return true;
        }
    }
    return false;
}

最佳答案

这是问题所在(如果不是拼写错误):

if (num == other.num);{

分号意味着 if 语句是一个空语句,因此它的计算并不真正参与等于验证过程。只需删除分号即可:

if (num == other.num){

关于java - 重写 equals 方法问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21689370/

相关文章:

c++ - 在 Debug 中覆盖 memcpy 工作但在 Release 中不工作?

java - Maven第一次提示@Override注解,但下次编译成功

swift - 结构和可重写的协议(protocol)扩展

java - 为什么引入FileWriter会删除文件中的所有内容?

java - AspectJ 中匹配类时 *+ 和 * 之间的区别?

java - 查询单列并返回值的集合而不是复杂的对象

c++ - Qt Creator "override method"快捷方式?

java - 如果在第一个作业之后我们在控制台输出中获得了特定值,如何在 Jenkins 中运行第二个作业

java - Android (libGDX) 使用 PHP 服务器端脚本与 mySQL 进行 http 连接

python - 如何覆盖 peewee 中的 create_table() 以创建额外的历史记录?