【发布时间】:2013-06-11 01:40:00
【问题描述】:
每当我使用 eclipse 'source' 菜单覆盖 hashcode() 时,它都会在类中生成以下代码
final int prime = 31;
int result = 1;
result = prime * result + ((fieldName1== null) ? 0 : fieldName1.hashCode());
result = prime * result + ((fieldName2== null) ? 0 : fieldName2.hashCode());
谁能解释一下为什么它要进行所有这些计算(乘法然后加法),为什么它没有简单地返回
fieldName.hashCode();
or
fieldName2.hashCode();
?
【问题讨论】:
-
尝试在你的类中包含两个或更多字段,然后生成并查看会发生什么。
-
@Zavior 这不是重复的,因为在其他问题中被问到为什么不使用 XOR。这里问为什么要用计算来创建
hashCode。 -
很公平,那里的第一个答案也确实回答了这个问题:P
-
@darijan 我的班级有 15 个字段我在这里只放了一段代码,因为为了便于阅读,虽然我在这里放了两个字段。
标签: java jakarta-ee overriding hashcode