Java比较两个子对象

问题描述

我有一个类 - 它有一个字段“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

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...