0

是否可以比较来自 2 个不同类的 2 个对象。

假设我有一个向量,它添加了 A 类中的所有对象。我想将一些字符串与向量的元素进行比较。

例子:

if(string.equals(vector.get(i)))

这可能吗 ?

4

5 回答 5

3

是的,你可以打电话equals()。但是,如果参数属于不同的类(可能不是子类) ,则任何合理的实现SomeClass.equals()都会返回。false

如果string是 的一个实例,则特别保证java.lang.String此行为:

结果是true当且仅当参数不是null并且是表示与该String对象相同的字符序列的对象。

于 2012-12-04T20:41:25.587 回答
1

您的对象至少在 Object 类中,因此(至少部分)在同一个类中。

于 2012-12-04T20:42:24.610 回答
0

如果列表的元素具有 String 以外的类型,它将始终返回 false。从String方法的文档中equals

将此字符串与指定对象进行比较。当且仅当参数不为 null 并且是表示与此对象相同的字符序列的 String 对象时,结果才为真。

这对于方法 equals 通常是正确的 - 只有在比较对象属于同一类或前者的子类的情况下,它才会或应该返回 true。

于 2012-12-04T20:44:17.260 回答
0

写这样的东西是完全有效的;

public class MyClass {
    public boolean equals(Object o) {
        if(o instanceof SomeUnrelatedClass) return true;
        return false;
    }
}

但这是不可取的,因为至少会尽量避免它。它会使处理MyClass对象有点奇怪,例如将它们放入基于哈希的集合中。

于 2012-12-04T20:44:50.010 回答
0

一个对象的equals方法可以接受任何其他对象。但是,在将苹果与橙子进行比较时,是否返回 true 取决于实现

于 2012-12-04T20:42:54.507 回答