Chính xác thì bạn đang định làm gì với nó (những gì bạn muốn làm sẽ tạo ra sự khác biệt với những gì bạn sẽ cần gọi).
hashCode
, như được định nghĩa trong JavaDocs, cho biết:
Về mặt thực tế, phương thức hashCode được định nghĩa bởi class Object không trả về các số nguyên riêng biệt cho các đối tượng riêng biệt. (Điều này thường được thực hiện bằng cách chuyển đổi địa chỉ nội bộ của đối tượng thành một số nguyên, nhưng kỹ thuật triển khai này không được ngôn ngữ lập trình Java ™ yêu cầu.)
Vì vậy, nếu bạn đang sử dụng hashCode()
để tìm hiểu xem nó có phải là một đối tượng duy nhất trong bộ nhớ hay không thì đó không phải là một cách hay.
System.identityHashCode
làm như sau:
Trả về cùng một mã băm cho đối tượng đã cho giống như sẽ được trả về bởi phương thức mặc định hashCode (), cho dù lớp của đối tượng đã cho có ghi đè hashCode () hay không. Mã băm cho tham chiếu rỗng là 0.
Điều này, đối với những gì bạn đang làm, có vẻ giống như những gì bạn muốn ... nhưng những gì bạn muốn làm có thể không an toàn tùy thuộc vào cách thư viện được triển khai.