【发布时间】: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));
【问题讨论】: