我想知道instanceof运算符是如何在覆盖equals()方法的 在这个例子中," obj instanceof FooForEqual"是回报"是"在重写的equals()中。有人可以解释一下吗?
public class EqualsTest {
public static void main(String[] args)
{
FooForEqual ffe1=new FooForEqual(23);
FooForEqual ffe2=new FooForEqual(23);
if (ffe1.equals(ffe2))
{
System.out.println("both objects are equal");
}
else
System.out.println("both objects are not equal");
}
}
class FooForEqual
{
private int fooForEqualValue;
public FooForEqual(int number) {this.fooForEqualValue=number;}
public int getFooForEqualValue() {
return fooForEqualValue;
}
@Override
public boolean equals(Object obj)
{
if (obj instanceof FooForEqual && ( ((FooForEqual) obj).getFooForEqualValue()==this.fooForEqualValue)) {
return true;
}
else
return false;
}
}
答案 0 :(得分:0)
obj instanceof FooForEqual
的实例(或FooForEqual
的子类)作为FooForEqual
方法的参数传递, equals
将返回true。
这意味着对象的一个条件等于FooForEqual
类的实例是FooForEqual
的实例。
将obj instanceof FooForEqual
评估为true
后,equals
方法可以安全地将obj
转换为FooForEqual
,并进一步比较两个FooForEqual
的属性确定相等的实例。