我想比较 StudentDTO 类对象。
StudentDTO s1 = new StudentDTO();
StudentDTO s2 = new StudentDTO();
s1.equals(s2)
我的 StudentDTO 类包含 AddressDTO 类对象作为变量,名称作为字符串。
StudentDTO
--> String name
--> AddressDTO
我知道如何使用数据类型实现 equals 方法。但现在我想为包含 AddressDTO 类的 StudentDTO 类实现 hashcode 和 equals 方法。
@Data
public class StudentDTO {
public AddressDTO address;
public String name;
}
感谢您的帮助。
如果你有另一个类,那么你还需要重写内部类的equal和hashcode,并在studentdto类中调用它的equal方法,执行以下操作
第1步:在AddressDTO中实现equals和hashCode
在 StudentDTO 中实现这些方法之前,请确保 AddressDTO 已正确覆盖 equals 和 hashCode。我不会为 AddressDTO 提供显式实现,因为它取决于其字段,但它将遵循与 StudentDTO 类似的模式。
第2步:在StudentDTO中实现equals和hashCode
import java.util.Objects;
@Data
public class StudentDTO {
public AddressDTO address;
public String name;
@Override
public boolean equals(Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
StudentDTO that = (StudentDTO) o;
return Objects.equals(address, that.address) && Objects.equals(name, that.name);
}
@Override
public int hashCode() {
return Objects.hash(address, name);
}
}
请记住,考虑到确定相等性的 AddressDTO 字段,必须正确重写 AddressDTO 的 equals 和 hashCode 方法才能按预期工作。