@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)注解
版权声明
本文仅代表作者观点,不代表本站立场。
本文系作者授权发表,未经许可,不得转载。