问题描述
我有一个类 - 它有一个字段“id”,它是一个整数。我们称这个类为“作者”。
我有另一个类,它有一个字段“作者”,它是一个“作者”。我们称这个类为“Book”。
如果我有两个 book 对象,记录作者 ID 差异(如果有的话)的最佳方法是什么?
“id”字段可以为空,“author”字段也可以为空。是否有一些预先编写的代码可以处理空检查的所有可能的排列?
解决方法
您必须为您的类正确实现 equals 方法,同时查看内部对象,使用类似这样的方法
@Override
public boolean equals(Object o) {
if (o == this) return true;
if (!(o instanceof Book)) return false;
Book other = (Book) o;
if (!other.canEqual((Object)this)) return false;
if (!super.equals(o)) return false;
if (!this.other.author.equals(this.author)) return false;
return true;
}
如果不想要特定的行为,您可以使用带有 @EqualsAndHashCode 注释的 Lombok