我使用eclipse生成覆蓋Object的hashCode和equals方法,並生成了一些關於hashCode覆蓋的問題。下面的hashCode()是否正確?Eclipse自動生成的hashCode覆蓋
問題:
- 爲什麼不蝕產生兩個結果=行代碼?我認爲將這兩個結果加在一起是適當的。任何想法爲什麼他們是單獨的任務?
- 最終的int prime可以是任何素數嗎?
-Should int result always be 1?
public class Overrider {
private Long id;
private String name;
@Override
public int hashCode() {
final int prime = 31;
int result = 1;
result = prime * result + ((id == null) ? 0 : id.hashCode());
result = prime * result + ((name == null) ? 0 : name.hashCode());
return result;
}
@Override
public boolean equals(Object obj) {
if (this == obj)
return true;
if (obj == null)
return false;
if (getClass() != obj.getClass())
return false;
Overrider other = (Overrider) obj;
if (id == null) {
if (other.id != null)
return false;
} else if (!id.equals(other.id))
return false;
if (name == null) {
if (other.name != null)
return false;
} else if (!name.equals(other.name))
return false;
return true;
}
}
的[可能重複重寫equals和hashCode在Java](http://stackoverflow.com/questions/27581/overriding-equals-and-hashcode-in-java) –
它不是一個重複的,我想知道,如果Eclipse插入是有效的,因爲它不同於其他我見過的例子 – c12
「_任何想法爲什麼他們是單獨的任務?」因爲可讀代碼比干擾大量邏輯成一行的垃圾好得多。 – jahroy