Iña*_*aki 3 java overriding equals
这里有新手问题:
所以在我的大学作业中,我必须为我创建的新类重写对象类equals方法.
新类是"Product",每个产品都有一个唯一的"id"属性.所以这就是我覆盖它的方式:
@Override
public boolean equals(Object obj) {
final Product other = (Product) obj;
if (id != other.id)
return false;
return true;
}
Run Code Online (Sandbox Code Playgroud)
事情是这样做是10分中的1.5分,这让我怀疑是那么容易.所以我开始搜索,我找到了类似的东西:
@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;
}
Run Code Online (Sandbox Code Playgroud)
这对我来说根本没有意义,因为我认为最后一个如果检查所有其他的ifs限制.你们有什么想法?哪种更好的方法来覆盖这种方法?
谢谢!
Jon*_*eet 14
第二段代码更好:
x.equals(x),这对于正确性来说不是必需的,但是是一种有用的优化x.equals(null)而不是投掷NullPointerExceptionClassCastException你自己的类(例如x.equals("foo"))obj.equals(x)可以调用不同的方法,给出不同的结果.