在我工作的其中一個應用程序中,我發現他們正在考慮使用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你的答案似乎更容易理解 –