是否可以在不覆盖equals方法的情况下比较同一类的2个对象..? 如果是的话,请告诉我如何......? 根据我的说法,不能比较同一类的2个不同对象的变量而不覆盖,因为对象包含内存地址而不是变量值。
class A {
int x;
A(int x) {
this.x=x; }
}
A a1=new A(5);
A a2=new A(4);
我们可以比较a1和amp; a2使用equals方法而不覆盖它..?此值也应该与a1和a的地址进行比较。 A2 ...
答案 0 :(得分:1)
可以使用==
运算符验证基本对象标识,如果未覆盖,则equals()
验证。如果您想定义自己的自定义equals()
行为,当然您需要覆盖它。
答案 1 :(得分:0)
这取决于您的要求。您可以根据需要实施Comparator并覆盖其compare()。 compare()
内的逻辑根本不需要使用equals()
或hashCode()
。我相信检查相等性和比较对象是不同的事情。
答案 2 :(得分:0)
这取决于你需要做什么。为什么不等于等于?这是正确的方式...
您仍然可以手动比较对象之间的字段,但将其打包到equals方法更干净。
现在,如果你问为什么不只是使用== b,那么在大多数情况下它都不会起作用,因为正如你所说,它是你正在调用的对象引用而不是它的内容。
答案 3 :(得分:0)
您可以尝试使用Comparator
执行此操作:(如果0
将返回.equals()
,<比较方法应返回true
< / p>
public class YourClassComparator implements Comparator<YourClass> {
@Override
public int compare(YourClass left, YourClass right) {
// do the comparison and return
// <0 if left < right
// 0 if left equals right
// >0 if left > right
}
}
然后用它来检查是否相等
if(new YourClassComparator().compare(yourClass1, yourClass2) == 0) {
// objects are equal
}