【发布时间】:2019-09-19 18:05:24
【问题描述】:
要使一个类成为有效的 Javabean(根据 JavaBeans Specification),是否应该在其 equals() 方法中测试其所有属性 - 并相应地影响其 hascode() 实现?或者某些属性可能被故意搁置一旁?
例如,Person 类:
-
id和name在 geter 和 setter 中公开的属性 - 无参数构造函数
-
仅考虑
id的equals和hashcode方法
是否有资格成为有效的 JavaBean?
【问题讨论】:
-
当然,
equals和hashcode的一般合同允许忽略字段。我不认为 JavaBeans 规范会有所不同。 -
是的,这将是一个有效的 bean。事实上,这通常是应该的。
equals和hashCode应该基于对象的概念标识。 bean 的每个属性的基本标识很少是正确的。
标签: java javabeans equals hashcode specifications