如何忽略自定义对象的 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;

}

Lombok EqualsAndHashCode documentation