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

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

    // ...
}

我有一个 Tuple 对象的 Tuple 类,其中一种方法是检查对象是否等于 Tuple 对象。我不会指定是什么决定了两个元组之间的相等性,但我感到困惑的是如何处理 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

您必须审查您的业务需求,但在大多数情况下,如果类型不同,那么它将被视为不平等——您甚至无法比较其他对象,除非它是相同的类型/子类型。因此:

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 回答
0

您需要将对象o转换为Tuple以比较Tuple. Tuple您应该在转换之前使用运算符比较输入对象是否属于类型instanceOf

于 2013-09-20T00:54:16.467 回答