在我工作的其中一个应用程序中,我发现他们正在考虑使用null id的两个对象是不同的,这是java中equals()方法的正确行为吗?具有空ID的对象是相同的?
示例实现是如下::
public boolean equals(Object obj) {
if (this == obj) {
return true;
}
if (obj != null && obj instanceof A) {
A a = (A) obj;
// If the id is null then its considered as different object.
if (a.getId() != null && a.getId().equals(this.getId())) {
return true;
} else {
return false;
}
} else {
return false;
}
}
这是一个应用程序级别的决定。这是一个可能的实现 - 它取决于你想要达到的目标。 (我将它写为'return a.getId()!= null && a.getId()。equals(this.getId())'' –
另外,写'obj!= null && obj instanceof A'因为'instanceof'在第一个参数为空时返回'false' –
thanx Jon Skeet你的答案似乎更容易理解 –