hashCode():Objects.hash()和基类?

sjn*_*ngm 5 java hash hashcode java-7

假设我有两节课

class A {

  private String aStr;

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

}
Run Code Online (Sandbox Code Playgroud)

class B extends A {

  private String bStr;

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

}
Run Code Online (Sandbox Code Playgroud)

作为类的领域A中仍然字段B需要被散列,我该如何正确地包含的字段的哈希码AB.hashCode()?这些都是?

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

Jon*_*eet 12

我可能会用

Objects.hash(bStr, super.hashCode())
Run Code Online (Sandbox Code Playgroud)

你一定要你知道与超类实现的状态结合起来hashCode(),所以任何解决方案将要使用bStrsuper.hashCode()...你原来添加的想法将工作太,当然-它只是相结合的结果,以不同的方式.