使用“Object”类型检查参数的特定对象类型

时间:2013-09-20 00:51:49

标签: java oop object

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

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

    // ...
}

我有一个Tuple对象的Tuple类,其中一个方法是检查一个对象是否等于一个Tuple对象。我不会指定什么决定了两个元组之间的相等性,但我很困惑的是如何处理equals()方法的参数参数是'Object'这一事实。显然,如果对象甚至不是Tuple,我会返回false - 这是最好的方法吗?

我知道有一些方法,例如instanceof和getClass,但这是正确/推荐的方法吗?

谢谢!

3 个答案:

答案 0 :(得分:3)

if(!(o instanceof Tuple))
    return false;
Tuple other = (Tuple) o;
...

答案 1 :(得分:0)

您需要将对象o强制转换为Tuple以比较Tuple的属性。在转换之前,您应该使用Tuple运算符来比较输入对象是否为instanceOf类型。

答案 2 :(得分:0)

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

public boolean equals(Object o) {
  if(! (o instanceof Tuple)) return false;
  Tuple other = (Tuple) o;
  // do your comparison logic here
}