どちらかが等しい場合、このタイプのオブジェクトは等しいと見なされるように、2つのフィールドに基づいて等しいクラスがあります。このようなequals()のhashCode()関数を記述して、equalsがtrueを返すときにhashCodeが等しいという一般的なコントラクトが保持されるようにするにはどうすればよいですか?
public class MyClass {
int id;
String name;
public boolean equals(Object o) {
if (!(o instanceof MyClass))
return false;
MyClass other = (MyClass) o;
if (other.id == this.id || other.name == this.name)
return true;
return false;
}
}
このクラスのhashCode()関数を作成するにはどうすればよいですか?そして、私はここで次のような定数を返すという些細なケースを避けたいと思います。
public int hashCode() {
return 1;
}