1. ホーム
  2. java

[解決済み] Objects.equalsとObject.equals

2022-03-01 12:07:08

質問

Javaでタプルのような構造を可能にするタプルクラスを作ろうとしています。タプルの2つの要素の一般的な型は、それぞれXとYです。このクラスに対して正しいイコールをオーバーライドしようとしています。

しかし、Object.equalsはデフォルトでは"=="のような参照に基づいて比較されることを知っているので、私はそれを使用できるかどうかわからない。私はオブジェクトを調べ、その中にequals()があることを知りました。これはまだ参照で比較するのでしょうか、それとも内容で比較するのでしょうか?

ぱっと想像して、return文はこんな感じかな。

return Objects.equals(compared.prev, this.prev) && Objects.equals(compared.next, this.next);

ここで、prev と next はタプルの要素である。これはうまくいくでしょうか?

どのように解決するのですか?

その差は Objects.equals() は2つのnullを"equal"と見なします。擬似的なコードは

  1. 両方のパラメータが null または同じオブジェクトを返します。 true
  2. もし最初のパラメータが null 返す false
  3. に第2パラメータを渡した結果を返します。 equals() メソッドで、1番目のパラメータ

これは、quot;null safe"であることを意味します(第1パラメーターの equals() メソッドはともかくとして)。