对象 A ref#A
- 规范化
- SKU-07
- hashCode
- —
== 回答“是不是同一个对象”,equals 回答“按当前业务规则是否相等”。当值相等参与哈希集合时,hashCode 必须与它保持一致。
规范化规则固定为 trim().toUpperCase();它只是本例的业务规则,不是 Java 自动执行的行为。
| 对象对 | == | equals | 哈希相同 |
|---|
检查器基于当前 A、B、C 样本。当前没有触发某个前提时,会明确显示“未触发”,而不是伪装成充分证明。
这里故意允许修改 A 的 code,以观察为什么用于相等与哈希的身份字段通常应保持不可变。
先记录 A 加入时的哈希入口,再修改上方 A 的 code,最后用 A 当前的哈希尝试查找。
equals 与 hashCode 使用一致、稳定的身份;== 仍只负责回答引用身份。