Chỉ ghi đè equals()
nếu có ý nghĩa. Nhưng rõ ràng nếu bạn ghi đè equals()
bạn cần đảm bảo rằng hợp đồng hashcode()
không bị hỏng, có nghĩa là nếu hai đối tượng bằng nhau, chúng phải có cùng mã băm.
Khi nào điều đó hợp lý? Khi Object.equals()
không đủ. Đó là phương pháp cơ bản đi xuống đến danh tính tham khảo, có nghĩa là hai đối tượng đều cùng một đối tượng như vậy:
số là một ví dụ rõ ràng khi nó có ý nghĩa vì Integer(10)
phải bằng Intger(10)
khác.
Ví dụ khác có thể là khi bạn đại diện cho bản ghi cơ sở dữ liệu. Giả sử bạn có Hồ sơ học sinh với một số nguyên duy nhất, sau đó nó có thể được thực hiện đầy đủ bằng để chỉ đơn giản là so sánh các lĩnh vực ID.