我正在执行一项任务,要求我覆盖住宅类的equals方法。
说明如下:
当他们的建筑面积相等且他们的游泳池状态相同时,两栋房屋是相同的
到目前为止,这是我写的:
@Override
public boolean equals(Object other) {
if (other instanceof House) {
House otherHouse = (House) other;
return otherHouse.calcBuildingArea() == ???
&& otherHouse.mPool == ???
} else {
return false;
}
}
现在我不知道在==
标志后写什么。我不知道如何指定调用该方法的对象。
答案 0 :(得分:1)
如果在未指定对象的情况下调用方法,则将在当前对象上调用该方法。所以你可以写
return otherHouse.calcBuildingArea() == calcBuildingArea()
&& otherHouse.mPool == mPool;
或者如果你想让它变得清晰明确,你可以写
return otherHouse.calcBuildingArea() == this.calcBuildingArea()
&& otherHouse.mPool == this.mPool;
另请注意,这假设mPool
属于基本类型或enum
类型。如果它是引用类型,例如String
,您可能需要调用其equals
方法,例如
return otherHouse.calcBuildingArea() == calcBuildingArea()
&& otherHouse.mPool.equals(mPool);
甚至更无效的
return otherHouse.calcBuildingArea() == calcBuildingArea()
&& Objects.equals(otherHouse.mPool, mPool);
答案 1 :(得分:0)
这个怎么样?
return otherHouse.calcBuildingArea() == this.calcBuildingArea()
&& otherHouse.mPool == this.mPool