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
需要被散列,我该如何正确地包含的字段的哈希码A
的B.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()
,所以任何解决方案将要使用bStr
和super.hashCode()
...你原来添加的想法将工作太,当然-它只是相结合的结果,以不同的方式.
归档时间: |
|
查看次数: |
2073 次 |
最近记录: |