equals() と hashcode() について読んでいるうちに、2 つのオブジェクトが等しい場合、それらのハッシュコードは等しいはずですが、その逆ではないことがわかりました。
しかし、以下の例はこれを反映していません。
class Employee{
private String name;
Employee(String name){
this.name = name;
}
@Override
public boolean equals(Object obj) {
if (this == obj)
return true;
if (obj == null)
return false;
if (getClass() != obj.getClass())
return false;
Employee other = (Employee) obj;
if (name == null) {
if (other.name != null)
return false;
} else if (!name.equals(other.name))
return false;
return true;
}
}
ここで、2 つの Employee オブジェクトを次のように作成するとします。
Employee e1 = new Employee("hi");
Employee e2 = new Employee("hi");
もしそうなら、印刷から明らかなハッシュコードが異なっていても、それはtruee1.equals(e2)
を返します.e1.hashcode()
e2.hashcode()
誰かが私を説明できますか?