【发布时间】:2011-06-15 20:57:23
【问题描述】:
新手问题在这里:
所以在我的大学作业中,我必须为我创建的新类重写对象类 equals 方法。
新类是“Product”,每个产品都有一个唯一的“id”属性。所以这就是我覆盖它的方式:
@Override
public boolean equals(Object obj) {
final Product other = (Product) obj;
if (id != other.id)
return false;
return true;
}
问题是这样做是 1.5 分(满分 10 分),这让我怀疑是不是那么容易。所以我开始搜索,我发现了类似的东西:
@Override
public boolean equals(Object obj) {
if (this == obj)
return true;
if (obj == null)
return false;
if (getClass() != obj.getClass())
return false;
final Product other = (Product) obj;
if (id != other.id)
return false;
return true;
}
这对我来说根本没有意义,因为我认为最后一个 if 检查所有其他 ifs 限制。你们怎么看?覆盖此方法的更好方法是什么?
谢谢!
【问题讨论】:
-
equals 的合约规定所有相等的对象必须具有相同的哈希码。因此,如果您覆盖 equals(),则必须覆盖 hashCode()。
标签: java overriding equals