Lombok关于equals坑
在b站刷到这个视频,于是有了本文章
那么是否真的会呢?
ps:如果是同对象非继承情况下不会(也许会有bug没发现
省流
用@EqualsAndHashCode(callSuper = true)
Lombok会自动为我们生成equals(Object other)和hashCode()方法的实现代码
这边创建两个类(这边是顺手用springtest测试的
Dog类
@Data
@AllArgsConstructor
@NoArgsConstructor
public class Dog {
private String name;
private int age;
}
SmallDog类
@Data
@AllArgsConstructor
@NoArgsConstructor
public class SmallDog extends Dog{
private String color;
}
测试类
SmallDog smallDog1 = new SmallDog();
smallDog1.setName("小狗");
smallDog1.setAge(1);
SmallDog smallDog2 = new SmallDog();
smallDog2.setName("小狗2");
smallDog2.setAge(1);
// System.out.println(JSONUtil.toJsonStr(smallDog1));
// System.out.println(JSONUtil.toJsonStr(smallDog2));
System.out.println(smallDog1.equals(smallDog2));
结果是确实有坑
如果添加SmallDog的颜色属性呢
这样就不一样了
不用注解,用生成的会怎么样(注意生成的没有重写equals与hashCode
但是dog还是有注解的,如果dog也是生成的会怎么样
依然可以成功判断
用更简单的方法@EqualsAndHashCode(callSuper = true)注解试试(SmallDog类
还原到最初注解时测试
Lombok关于equals坑
http://www.404np.com:8080/archives/1722763603545