Tidak semua objek dapat dibandingkan, tetapi semua objek dapat diperiksa untuk kesetaraan. Jika tidak ada yang lain, seseorang dapat melihat apakah dua objek ada di lokasi yang sama dalam memori (referensi kesetaraan).
Apa artinya compareTo()dua Threadbenda? Bagaimana satu utas "lebih besar dari" yang lain? Bagaimana Anda membandingkan dua ArrayList<T>s?
The Objectkontrak berlaku untuk semua kelas Java. Jika bahkan satu kelas tidak dapat dibandingkan dengan contoh lain dari kelasnya sendiri, maka Objecttidak dapat mengharuskannya untuk menjadi bagian dari antarmuka.
Joshua Bloch menggunakan kata-kata kunci "pemesanan alami" ketika menjelaskan mengapa kelas mungkin ingin diterapkan Comparable. Tidak setiap kelas memiliki urutan alami seperti yang saya sebutkan dalam contoh saya di atas, jadi tidak setiap kelas harus menerapkan Comparableatau Objectmemiliki compareTometode.
... compareTometode ini tidak dinyatakan dalam Object. ... Hal ini mirip dalam karakter Object's equalsmetode, kecuali bahwa hal itu memungkinkan perbandingan agar selain perbandingan kesetaraan sederhana, dan itu adalah generik. Dengan mengimplementasikan Comparable, sebuah kelas menunjukkan bahwa instansnya memiliki urutan alami .
Java Efektif, Edisi Kedua : Joshua Bloch. Butir 12, Halaman 62. Elips menghapus referensi ke bab lain dan contoh kode.
Untuk kasus di mana Anda tidak ingin memaksakan sebuah memesan pada non Comparablekelas yang tidak memiliki memesan alami, Anda selalu dapat menyediakan Comparatorcontoh untuk bantuan semacam itu.