オブジェクトの hashCode および equals メソッドのオーバーライドを生成するために eclipse を使用しましたが、hashCode のオーバーライドに関するいくつかの質問が生成されました。以下の hashCode() は正しいですか?
質問:
-Eclipse が 2 つの結果 =コード行を生成するのはなぜですか? 2 つの結果を足し合わせるのが適切だと思います。それらが別々の割り当てである理由はありますか?
-最後の int 素数は任意の素数にできますか?
-int 結果は常に 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;
}
}