比较来自不同java类的2个对象
可以比较两个不同类中的两个对象吗 假设我有一个向量,它将类A中的所有对象相加。我想将一些字符串与向量的元素进行比较 例如:比较来自不同java类的2个对象,java,string,class,object,Java,String,Class,Object,可以比较两个不同类中的两个对象吗 假设我有一个向量,它将类A中的所有对象相加。我想将一些字符串与向量的元素进行比较 例如: if(string.equals(vector.get(i))) 这可能吗?是的,您可以调用equals()。但是,如果参数属于不同的类(可能不是子类),则SomeClass.equals()的任何合理实现都将返回false 如果string是java.lang.string的实例,则此行为为: 结果是true当且仅当参数不是null且是一个字符串对象表示与此对象相同的字
if(string.equals(vector.get(i)))
这可能吗?是的,您可以调用
equals()
。但是,如果参数属于不同的类(可能不是子类),则SomeClass.equals()
的任何合理实现都将返回false
如果string
是java.lang.string
的实例,则此行为为:
结果是true
当且仅当参数不是null
且是一个字符串
对象表示与此对象相同的字符序列时
是的,您可以调用
equals()
。但是,如果参数属于不同的类(可能不是子类),则SomeClass.equals()
的任何合理实现都将返回false
如果string
是java.lang.string
的实例,则此行为为:
结果是true
当且仅当参数不是null
且是一个字符串
对象表示与此对象相同的字符序列时
您的对象至少在类对象中,因此(至少部分)在同一类中。您的对象至少在类对象中,因此(至少部分)在同一类中。对象的Equals方法可以接受任何其他对象。然而,当比较一个苹果和一个橘子时,它将取决于实现是否返回true。一个对象的方法可以接受任何其他对象。但是,当比较苹果和橙色时,将由实现决定不返回true。如果列表元素的类型不是String,那么它将始终返回false。从方法
等于的字符串文档中:
将此字符串与指定的对象进行比较。当且仅当参数不为null并且是表示与此对象相同的字符序列的字符串对象时,结果才为true
对于方法equals,这通常是正确的-只有在比较对象属于同一类或前者的子类时,它才会或应该返回true。如果列表元素的类型不是String,它将始终返回false。从方法等于的字符串文档中:
将此字符串与指定的对象进行比较。当且仅当参数不为null并且是表示与此对象相同的字符序列的字符串对象时,结果才为true
对于方法equals,这通常是正确的-只有在比较对象属于同一类或前者的子类的情况下,它才会或应该返回true
public class MyClass {
public boolean equals(Object o) {
if(o instanceof SomeUnrelatedClass) return true;
return false;
}
}
但这是不可取的,至少我会尽量避免。这会使处理MyClass
对象有点奇怪,例如将它们放入基于散列的集合中
public class MyClass {
public boolean equals(Object o) {
if(o instanceof SomeUnrelatedClass) return true;
return false;
}
}
但这是不可取的,至少我会尽量避免。这会使处理MyClass
对象变得有点奇怪,例如将它们放入基于哈希的集合中。是的,这是可能的,您是否有一个更具体的问题,这并不像您预期的那样工作?您能更具体地说明您想要比较什么吗?是的,这是可能的,您是否有一个更具体的问题,这不是您所期望的工作?您是否可以更具体,以便比较什么?是的,我有一个不同的类,它返回false,如何修复it@KarishKarish:定义“fix”。好的,我有类A和类B。类A有一个接受字符串的构造函数。类B包含向量,该向量将类A中的所有元素相加。当我将vector和字符串get falseyes进行比较时,我有一个不同的类,它返回false,如何修复it@KarishKarish:定义“fix”。好的,我有类A和类B。类A有一个接受字符串的构造函数。类B包含向量,该向量将类A中的所有元素相加。当我将向量与字符串进行比较时,会遇到一个问题,即我使用了另一个类,当我比较它们时,它会给出false,这是预期会发生的。但是我猜您需要将字符串与另一个类中的某个字段进行比较。那么,为什么不在另一个类的字段上调用equals呢?问题是,我使用了另一个类,当我比较它们时,它给了我false。好吧,这是预期会发生的。但是我猜您需要将字符串与另一个类中的某个字段进行比较。那你为什么不在另一个类的字段上调用equals呢?