如何忽略自定义对象的 Java equals() 中的 1 个字段?
How to ignore 1 field in Java equals() for custom object?
我有一个 Person
对象,它有 20 个字段并存储在 dynamoDB 中。
我想根据一些输入创建一个新的 Person
对象,检查数据库中是否存在相同的对象。如果存在,我想在 19 fields out of 20
的基础上比较 2 个对象。要忽略的字段是布尔标志检查。
我正在使用 Lombok @Data
生成 equals 方法。
有没有一种方法可以做到这一点而不必自己编写一个完整的覆盖 equals
方法?
您还可以将 Lombok 的 @EqualsAndHashCode 与排除结合使用。
@EqualsAndHashCode
public class MyObject{
@EqualsAndHashCode.Exclude
Object fieldToExclude;
}
除了选择要排除的内容之外,您还可以像这样选择要包含的内容。所有没有用 Include 注释的都不会在 equals & hashcode 实现中使用。
@EqualsAndHashCode(onlyExplicitlyIncluded = true)
public class MyObject{
@EqualsAndHashCode.Include
Object fieldToInclude;
}
我有一个 Person
对象,它有 20 个字段并存储在 dynamoDB 中。
我想根据一些输入创建一个新的 Person
对象,检查数据库中是否存在相同的对象。如果存在,我想在 19 fields out of 20
的基础上比较 2 个对象。要忽略的字段是布尔标志检查。
我正在使用 Lombok @Data
生成 equals 方法。
有没有一种方法可以做到这一点而不必自己编写一个完整的覆盖 equals
方法?
您还可以将 Lombok 的 @EqualsAndHashCode 与排除结合使用。
@EqualsAndHashCode
public class MyObject{
@EqualsAndHashCode.Exclude
Object fieldToExclude;
}
除了选择要排除的内容之外,您还可以像这样选择要包含的内容。所有没有用 Include 注释的都不会在 equals & hashcode 实现中使用。
@EqualsAndHashCode(onlyExplicitlyIncluded = true)
public class MyObject{
@EqualsAndHashCode.Include
Object fieldToInclude;
}