@EqualsAndHashCode()注解的功能大全
下文笔者讲述@EqualsAndHashCode注解的功能说明,如下所示
@EqualsAndHashCode注解是lombok中的一个注解,我们日常很少见
但我们一定要了解其具体功能,如下所示
@EqualsAndHashCode注解是lombok中的一个注解,我们日常很少见
但我们一定要了解其具体功能,如下所示
@EqualsAndHashCode功能
1.此注解会生成equals(Object other)和hashCode()方法
2.它默认使用非静态,非瞬态的属性
3.可通过参数exclude排除一些属性
4.可通过参数of指定仅使用哪些属性
5.它默认仅使用该类中定义的属性且不调用父类的方法
6.可通过callSuper=true解决上一点问题。让其生成的方法中调用父类的方法。
注意事项:
@Data相当于@Getter,@Setter,
@RequiredArgsConstructor,
@ToString,
@EqualsAndHashCode这5个注解的合集
EqualsAndHashCode使用场景
如果我们使用@Data注解
则代表使用@EqualsAndHashCode注解
此类中存在equals(Object other)和hashCode()方法,并不会使用父类的属性
例:
有多个类有相同的部分属性
将它们定义到父类中,但id(数据库主键)在父类中
如果此时进行部分对象比较时
则会出现并不相等,因为lombok自动生成equals(Object other)和hashCode()方法判定为相等
此时我们可使用以下方法解决此类异常
方式1:使用@Getter @Setter @ToString代替@Data并且自定义equals(Object other) 和 hashCode()方法
如 一些类只判断主键即可,则重写equals方法(使用主键判断)
方式2:使用@Data时同时加上@EqualsAndHashCode(callSuper=true)注解
版权声明
本文仅代表作者观点,不代表本站立场。
本文系作者授权发表,未经许可,不得转载。


