Hành vi mặc định của Object.hashCode() là trả về cơ bản "địa chỉ" của đối tượng sao cho a.hashCode() == b.hashCode() nếu và chỉ khi a == b . Làm thế nào tôi có thể nhận được hành vi này trong một lớp người dùng định nghĩa nếu một superclass đã định nghĩa hashCode()? Ví dụ:Mã băm Java dựa trên danh tính
class A {
public int hashCode() {
return 0;
}
}
class B extends A {
public int hashCode() {
// Now I want to return a unique hashcode for each object.
// In pythonic terms, it'd look something like:
return Object.hashCode(this);
}
}
Ý tưởng?
Không. Đó là lấy mã để a.hashCode()! = B.hashCode() ngụ ý nhất thiết là a! = B. –
... nhưng a.hashCode() == b.hashCode() không ngụ ý một == b tôi nên có thêm. –
nếu "a.equals (b)", không nhất thiết phải "a == b", thì mã băm phải bằng nhau: "a.hashCode() == b.hashCode()" –