Không phải tất cả các đối tượng có thể được so sánh, nhưng tất cả các đối tượng có thể được kiểm tra sự bình đẳng. Nếu không có gì khác, người ta có thể thấy nếu hai đối tượng tồn tại ở cùng một vị trí trong bộ nhớ (đẳng thức tham chiếu).
Nó có ý nghĩa gì compareTo()với hai Threadđối tượng? Làm thế nào là một chủ đề "lớn hơn" khác? Làm thế nào để bạn so sánh hai ArrayList<T>s?
Các Objecthợp đồng được áp dụng cho tất cả các lớp Java. Nếu thậm chí một lớp không thể so sánh với các thể hiện khác của lớp đó, thì Objectkhông thể yêu cầu nó là một phần của giao diện.
Joshua Bloch sử dụng các từ khóa "trật tự tự nhiên" khi giải thích lý do tại sao một lớp có thể muốn thực hiện Comparable. Không phải mọi lớp đều có một trật tự tự nhiên như tôi đã đề cập trong các ví dụ của tôi ở trên, vì vậy không phải mọi lớp nên thực hiện Comparablecũng như không nên Objectcó compareTophương thức.
... compareTophương thức không được khai báo Object. ... Nó tương tự như phương pháp Objectcủa equalsphương pháp, ngoại trừ việc nó cho phép so sánh thứ tự bên cạnh các so sánh đẳng thức đơn giản, và nó là chung chung. Bằng cách thực hiện Comparable, một lớp chỉ ra rằng các thể hiện của nó có một trật tự tự nhiên .
Java hiệu quả, Ấn bản thứ hai : Joshua Bloch. Mục 12, Trang 62. Dấu chấm lửng loại bỏ các tham chiếu đến các chương và ví dụ mã khác.
Đối với trường hợp bạn làm muốn áp đặt một trật tự trên một phi Comparablelớp mà không có một trật tự tự nhiên, bạn luôn có thể cung cấp một Comparatorví dụ để giúp sắp xếp nó.