private long configKeyMasterId;
private String configKey;
private boolean isDisplay;
public int hashCode() {
int result = (int) (configKeyMasterId ^ (configKeyMasterId >>> 32));
result = 31 * result + (configKey != null ? configKey.hashCode() : 0);
result = 31 * result + (isDisplay != null ? isDisplay.hashCode() : 0);
return result;
}
这就是我所拥有的isDisplay
是一个布尔字段。我知道第3行是错的,但我该如何解决呢?
有点天真,
result = 31 * result + (isDisplay != false ? Boolean.hashCode(isDisplay) : 0);
好吗?
我不知道如何或为什么必须覆盖hashCode()
,但我正在阅读它。
答案 0 :(得分:2)
检查false
是多余的。只是做
result = 31 * result + Boolean.hashCode(isDisplay);
编辑请注意,这假设isDisplay
是原始字段。如果它是一个盒装字段(Boolean
),那么您发布的版本(使用空检查)应该是正确的。
答案 1 :(得分:2)
如果您使用的是Java 7或更高版本,则可以使用Objects.hash(...)
而不是编写自己的版本并避免空检查。
return Objects.hash(configKey, isDisplay);