問題
以下の Book
クラスがあります。このクラスは書籍を表現しています。equals
メソッドと hashCode
メソッドを適切に実装してください。
import java.util.Objects;
public class Book {
private String title;
private String author;
private int year;
// コンストラクタやゲッター、セッターなどは省略
// equals メソッドと hashCode メソッドを実装
}
ヒント
equals
メソッドは、2つのオブジェクトが等しいかどうかを判断するために使用されます。以下の基本的なステップに従って equals
メソッドを実装できます。
- パラメータとして渡されたオブジェクトが、
this
オブジェクトと同じインスタンスであるかを確認します。 - パラメータが
null
でないことを確認します。 - パラメータが同じクラスのインスタンスであることを確認します。
- インスタンス変数ごとに、その値が等しいかどうかを比較します。
Objects.equals
メソッドを使用して、null
を考慮した等価性の比較を行うことができます。
hashCode
メソッドは、等しいと判断されるオブジェクトに対して同じハッシュコードを生成する必要があります。以下の基本的なステップに従って hashCode
メソッドを実装できます。
int
型の変数を初期化します(通常はresult
と呼ばれます)。- 各インスタンス変数のハッシュコードを計算し、
result
に組み込みます。 - 最終的な
result
を返します。
これらのステップに従って、Book
クラスの equals
メソッドと hashCode
メソッドを実装してみてください。
→解答例