先看问题,如图所示
注解解释
@EqualsAndHashCode 作用与子类上
-
callSuper = true
,根据子类自身的字段值和从父类继承的字段值来生成hashcode,当两个子类对象比较时,只有子类对象的本身的字段值和继承父类的字段值都相同,equals方法的返回值是true。 -
callSuper = false
,根据子类自身的字段值来生成hashcode, 当两个子类对象比较时,只有子类对象的本身的字段值相同,父类字段值可以不同,equals方法的返回值是true。
IDEA检查提示并快速修复
正在生成 equals/hashCode 实现,但即使此类未扩展 java.lang.Object,也不调用超类。如果这是有意为之,请在您的类型中添加 ‘(callSuper=false)’。
检查信息: 提供 Lombok 注解的一般检查。
点击后,快速修复添加注解
测试代码
package com.st;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.NoArgsConstructor;
import org.junit.Test;
/**
* @author st
* @date 2024/1/9 15:36
*/
@Data
@NoArgsConstructor
@AllArgsConstructor
class Animal {
private String name;
}
@EqualsAndHashCode(callSuper = true)
@Data
@NoArgsConstructor
@AllArgsConstructor
class Cat extends Animal {
private String age;
public Cat(String name, String age) {
super(name);
this.age = age;
}
}
public class TestAnnotation {
@Test
public void testCat() {
Cat cat1 = new Cat("1", "1");
Cat cat2 = new Cat("2", "1");
System.out.println(cat1.equals(cat2));
}
}
标签:EqualsAndHashCode,段值,Springboot,子类,Cat,import,注解
From: https://www.cnblogs.com/pqdl4312/p/18471377