小编And*_*tes的帖子

覆盖equals方法时,我们只使用'Object obj'作为参数吗?

我的任务是:

在Rational Numbers类中适当地重写equals()和hashCode()方法.

它进一步扩展了这一点.我的问题是,当你覆盖equals方法时,你是否更改了传入的参数?如果它检查逻辑等价,那么我已经完成了以下操作:

public boolean equals(Rational rhs){
    if(this.num == rhs.num && this.denom == rhs.denom){
        return true;
    }
    return false;
}
Run Code Online (Sandbox Code Playgroud)

我不确定这是否是覆盖方法时的方法.如果是,那么当你重写hashcode方法时,选择一段好的代码来分配哈希码只是一个简单的工作吗?

另外,这是我创建的哈希码.这是沿着正确的方向吗?

@Override
public int hashCode(){
    int hc = 17;
    hc = 37 * hc + ((num == 0 && denom == 0) ? 0 : num);
    return 37 * hc + denom;


    //boolean b = cond ? boolExpr1 : boolExpr2;
    //if cond true then b=boolExpr1 else b=boolExpr2
}
Run Code Online (Sandbox Code Playgroud)

java overriding equals

4
推荐指数
2
解决办法
1270
查看次数

标签 统计

equals ×1

java ×1

overriding ×1