【问题标题】:hashCode(): Objects.hash() And Base Class?hashCode(): Objects.hash() 和基类?
【发布时间】:2014-10-31 08:59:49
【问题描述】:

假设我有两个班级

class A {

  private String aStr;

  @Override
  public int hashCode() {
    return Objects.hash(aStr);
  }

}

class B extends A {

  private String bStr;

  @Override
  public int hashCode() {
    return Objects.hash(bStr);
  }

}

由于A类的字段仍然是B中需要散列的字段,如何在B.hashCode()中正确包含A中字段的散列码?有这些吗?

Objects.hash(bStr) + super.hashCode();
// these generate a StackOverflowError:
Objects.hash(bStr, (A) this);
Objects.hash(bStr, A.class.cast(this));

【问题讨论】:

    标签: java hash java-7 hashcode


    【解决方案1】:

    我可能会使用

    Objects.hash(bStr, super.hashCode())
    

    您肯定希望将您知道的状态与hashCode() 的超类实现结合起来,因此任何解决方案都希望使用bStrsuper.hashCode()...当然,您最初的加法想法也可以- 这只是组合结果的不同方式。

    【讨论】:

      猜你喜欢
      • 2018-01-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-07-20
      • 2023-03-09
      • 2012-02-26
      • 2013-07-22
      相关资源
      最近更新 更多