我有一个包含大量数据成员的类——其中一些是用户自己定义的类,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 .
在可接受/需要不变性的情况下,Immutables和 Google AutoValue库提供用于创建值类的注释以及所有样板代码,包括 equals()
方法。
关于java - 为具有多个字段的类覆盖 equals 的实用方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48171847/