java - 为具有多个字段的类覆盖 equals 的实用方法

标签 java

我有一个包含大量数据成员的类——其中一些是用户自己定义的类,Lists、HashMaps 等......

假设有 20 个数据成员。

除了检查每个字段的相等性之外,是否有更实用的方法来覆盖 equals() 运算符?

例如(使用 Guava ):

HashMap<k,v> dataMember1;
String dataMember2;
CustomClass dataMember3;
etc...

@Override   
public boolean equals(Object obj) {
    Objects.deepEquals(this.dataMember1, obj.dataMember1) &&
    Objects.equals(this.dataMember2, obj.dataMember2) &&
    Objects.equals(this.dataMember3, obj.dataMember3) &&
    etc...
}

我以前在生产代码中见过这些大块,但它们总是显得那么多余。

最佳答案

Java 有一个注解处理器,叫做 Lombok ,它提供了一些很好的注释来处理样板代码,包括 @EqualsAndHashCode .

在可接受/需要不变性的情况下,ImmutablesGoogle AutoValue库提供用于创建值类的注释以及所有样板代码,包括 equals() 方法。

关于java - 为具有多个字段的类覆盖 equals 的实用方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48171847/

相关文章:

java - Quicksort Java 代码进入无限循环

java - 使用 JUnit 测试构造函数

java - 项目 react 堆 : How to retry mono with different argument until some condition is met

java - 获取所有用户的应用列表

java - 使用 iText 读取 PDF 文档有时无法正常工作

java - 向 Spring XD 添加自定义类型转换器

java - EmbeddedKafkaBroker 设置属性抛出 NoClassDefFoundError : kafka/zk/EmbeddedZookeeper

java - 将 ArrayList 转换为字符串的最佳方法

java - 获取注释变量的值

java - 我可以在 Spring Controller 的 Ajax 请求中获取 POJO 吗?