是否可以比较来自 2 个不同类的 2 个对象。
假设我有一个向量,它添加了 A 类中的所有对象。我想将一些字符串与向量的元素进行比较。
例子:
if(string.equals(vector.get(i)))
这可能吗 ?
是的,你可以打电话equals()
。但是,如果参数属于不同的类(可能不是子类) ,则任何合理的实现SomeClass.equals()
都会返回。false
如果string
是 的一个实例,则特别保证java.lang.String
此行为:
结果是
true
当且仅当参数不是null
并且是表示与该String
对象相同的字符序列的对象。
您的对象至少在 Object 类中,因此(至少部分)在同一个类中。
如果列表的元素具有 String 以外的类型,它将始终返回 false。从String
方法的文档中equals
:
将此字符串与指定对象进行比较。当且仅当参数不为 null 并且是表示与此对象相同的字符序列的 String 对象时,结果才为真。
这对于方法 equals 通常是正确的 - 只有在比较对象属于同一类或前者的子类的情况下,它才会或应该返回 true。
写这样的东西是完全有效的;
public class MyClass {
public boolean equals(Object o) {
if(o instanceof SomeUnrelatedClass) return true;
return false;
}
}
但这是不可取的,因为至少我会尽量避免它。它会使处理MyClass
对象有点奇怪,例如将它们放入基于哈希的集合中。
一个对象的equals方法可以接受任何其他对象。但是,在将苹果与橙子进行比较时,是否返回 true 取决于实现