java中如何实现包含另一个类的类的equals方法

问题描述 投票:0回答:1

我想比较 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;
}

感谢您的帮助。

java equals comparator dto hashcode
1个回答
0
投票

如果你有另一个类,那么你还需要重写内部类的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 方法才能按预期工作。

© www.soinside.com 2019 - 2024. All rights reserved.