JAVA问题:不好理解!!希望有高手详细讲一下这代码是啥的意思??

2024-12-12 08:51:35
推荐回答(3个)
回答1:

这是覆盖的equals方法。。根据你自己的对比方法来判断两个东西是否相等。如果你有个类是Node,里面有x和y两个属性,java是无法判断两个Node是否相等的,所以要覆盖equals方法。就拿点来说吧。覆盖后差不多是这样
public boolean equals(Object obj) {
if (obj==null) //如果比较的对象是空,就返回false,代表不相等
return false;
if (obj == this) //如果比较的对象就是被比较对象,就返回true,代表相等
if(obj instanceof Node){ //按照自己的规则来定义如何去比较。
Node other=(Node)obj;
return (this.x==other.x)&&(this.y == other.y);
}
return false;
}

这差不多是equals的固定覆盖方法。。都是这么覆盖的。。

回答2:

1. Object obj 这个要是写在()中 ,就是 传了一个参数,这个参数就是 Object 对象。
不知道你说的固定写法是什么意思。
Object 是一个对象 他后面跟的 obj 是你给这个对象的名称,可以随便给。
2. 先从 if(obj instanceof Node) 说起。
其中 instanceof 是java保留关键字,是一个二元操作符。
你这样写的意思就是:测试它左边的对象(obj)是否是它右边的类的实例(Node)
如果相等了:Node other = (Node)obj;
就是将 Object 对象,保存到Node中,但是你可以看到,一个是Object 一个是Node,所以类型不一样,就需要在obj前加(Node) 强制转换为Node类型 再保存。
不知这样说 你能明白不。。。。

回答3:

public boolean equals(Object obj)
Object obj是Object类型的参数,参数名obj
Node other=(Node)obj;
obj是Object类型转换为Node类型