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 Thread
benda? Bagaimana satu utas "lebih besar dari" yang lain? Bagaimana Anda membandingkan dua ArrayList<T>
s?
The Object
kontrak berlaku untuk semua kelas Java. Jika bahkan satu kelas tidak dapat dibandingkan dengan contoh lain dari kelasnya sendiri, maka Object
tidak 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 Comparable
atau Object
memiliki compareTo
metode.
... compareTo
metode ini tidak dinyatakan dalam Object
. ... Hal ini mirip dalam karakter Object
's equals
metode, 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 Comparable
kelas yang tidak memiliki memesan alami, Anda selalu dapat menyediakan Comparator
contoh untuk bantuan semacam itu.