【问题标题】:hashcode implementation based on the Object Class基于对象类的哈希码实现
【发布时间】:2017-05-14 08:17:22
【问题描述】:

大家好,我有一个小问题要解决。

我创建了一个仅基于对象类的 equals() 方法,因此如果两个 obj 属于同一类,则 obj1.equals(obj2) 返回 true。 现在我的问题是,我如何实现仅基于 obj 类的 hashcode() ??

@Override
public boolean equals(Object obj){
    if(obj.getClass() == this.getClass()){
        return true;
    }else{
        return false;
    }
}

【问题讨论】:

  • return 79658765;(例如:任何整数都可以)。你为什么这样做?这似乎是个糟糕的主意。
  • 您可以返回完整类名的哈希码。但是你为什么要写这么糟糕的equals方法呢?请详细说明。
  • 这个的用例是什么?好像有什么东西会在你脸上炸开……

标签: java equals hashcode


【解决方案1】:

您可以返回Class 实例的hashCode

public int hashCode ()
{
    return getClass().hashCode();
}

这将确保基于您的equals() 实现相等的两个对象将具有相同的hashCode()

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2010-11-07
    • 1970-01-01
    • 1970-01-01
    • 2017-10-04
    • 1970-01-01
    • 2015-09-13
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多