0
public class Tuple {
    // ...
    // ...
    // ...

    // Compare if Tuple is equal to specified object o
    public boolean equals(Object o) {
        // code goes here
    }

    // ...
}

Tuple オブジェクトの Tuple クラスがあり、メソッドの 1 つは、オブジェクトが Tuple オブジェクトと等しいかどうかを確認することです。2 つのタプルの等価性を決定するものは特定しませんが、私が混乱しているのは、equals() メソッドのパラメーター引数が「オブジェクト」であるという事実をどのように処理するかです。明らかに、オブジェクトがタプルでさえない場合、false を返します。これを行う最善の方法は何ですか?

instanceof や getClass などのメソッドがあることは知っていますが、これを行うための正しい/推奨される方法はありますか?

ありがとう!

4

3 に答える 3

3
if(!(o instanceof Tuple))
    return false;
Tuple other = (Tuple) o;
...
于 2013-09-20T00:53:58.280 に答える
0

の属性を比較するには、オブジェクトoをにキャストする必要があります。キャストする前に、入力オブジェクトが演算子を使用して型であるかどうかを比較する必要があります。TupleTupleTupleinstanceOf

于 2013-09-20T00:54:16.467 に答える
0

ビジネス要件を確認する必要がありますが、ほとんどの場合、タイプが異なる場合は等しくないと見なされます。同じタイプ/サブタイプでない限り、他のオブジェクトを比較することさえできません。したがって:

public boolean equals(Object o) {
  if(! (o instanceof Tuple)) return false;
  Tuple other = (Tuple) o;
  // do your comparison logic here
}
于 2013-09-20T00:56:38.193 に答える