aio*_*obe 6 java equals hashcode
如果只有一个对象的某些字段代表实际状态,我认为在覆盖equals和hashCode... 时可以忽略这些字段.
我对此感到不安,并想问,
equals/中的某些字段时是否有任何文档或指南hashCode?在我的特殊情况下,我正在探索一个问题的状态空间.我想保留一组访问状态,但我也在考虑包括通往该州的路径.显然,两个国家是平等的,即使它们是通过不同的途径找到的.
这基于您如何考虑给定对象的唯一性。如果它有主键(唯一键),那么单独使用该属性就足够了。
如果您认为唯一性是 10 个不同属性的组合,则在 equals 中使用所有 10 个属性。
然后仅使用 equals 中使用的属性来生成哈希码,因为相同的对象应该生成相同的哈希码。
选择 equals 和 hashcode 的属性是定义给定对象的唯一性的方式。
这是常见做法吗?是的
这种方法有任何潜在的陷阱吗?不
关于忽略 equals / hashCode 中的某些字段,是否有任何文档或指南?
“Object 类的 equals 方法在对象上实现了最具辨别力的可能等价关系;”
这是来自对象类 Javadoc。但作为该类的作者,您知道如何定义唯一性。
| 归档时间: |
|
| 查看次数: |
579 次 |
| 最近记录: |