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