每当我覆盖equals和hash代码时,我都会按照Joshua Bloch在“ Effective
Java”第3章中的建议编写单元测试。我确保equals和hash代码是自反的,对称的和可传递的。我还确保“不等于”对所有数据成员均正常工作。
当我检查对equals的调用时,我还要确保hashCode的行为符合预期。像这样:
@Testpublic void testEquals_Symmetric() { Person x = new Person("Foo Bar"); // equals and hashCode check name field value Person y = new Person("Foo Bar"); Assert.assertTrue(x.equals(y) && y.equals(x)); Assert.assertTrue(x.hashCode() == y.hashCode());}


