1. Lombok的@EqualsAndHashCode(callSuper = true) 注解
这个注解用来自动生成equals()和hashCode()方法。其中,callSuper = true表示在生成这些方法时,还会考虑到父类中的字段,确保子类实例在比较相等性时也能正确地包含父类的字段比较。
2. equals() 方法
用于比较两个对象的内容是否相等。当重写此方法时,需要根据对象的实际属性来判断两个对象是否应该被视为“相同”。默认情况下,equals()方法比较的是两个对象的引用是否相同,即它们是否指向内存中的同一个位置。但大多数时候,我们关心的是对象的属性值是否相等,因此需要根据业务逻辑来重写该方法。
3. hashCode()方法
返回一个整型散列值(hash code)。当重写此方法时,应确保如果两个对象根据equals()方法判断为相等,则它们的hashCode()方法也必须返回相同的值。反之,如果两个对象根据equals()判断为不相等,则它们的hashCode()尽量返回不同的值,尽管这不是强制要求,但能提高集合操作的效率。