我有一套Car,其中Car类如下:
public class Car{
private Tyre tyre;
private Engine engine;
}
为了使用Set for car避免重复,我需要覆盖哈希码和等于Car类。我的问题是我还需要为Tire和Engine类实现equals和hashcode吗?
答案 0 :(得分:4)
不,你没有。
如果两个Car
s 的相等性取决于这些汽车所具有的Tyre
和Engine
的相等性,那么实施{{1} equals
和hashCode
类的{}和Tyre
方法以及从Engine
的{{1}}和Car
方法委派给它们的方法可能非常好主意。但是,如果以某种其他方式确定equals
等式(例如汽车ID),那么hashCode
的{{1}}或Car
方法可能是完全合理的。和equals
。
答案 1 :(得分:2)
如果您将hashCode
tyre
engine
hashCode
Car
方法hashCode
Tyre
方法用于Engine
,则需要覆盖equals
{1}}和tyre
中也{1}}。如果您要使用engine
equals
Car
equals
Tyre
方法Engine
的{{1}}结果{},那么您需要覆盖{{1}} } {{1}}和{{1}}也是。