Не все объекты можно сравнивать, но все объекты можно проверить на равенство. Если ничего другого, то можно увидеть, существуют ли два объекта в одном и том же месте в памяти (равенство ссылок).
Что это значит для compareTo()двух Threadобъектов? Как один поток "больше" другого? Как вы сравниваете два ArrayList<T>с?
ObjectДоговор относится ко всем классам Java. Если даже один класс нельзя сравнить с другими экземплярами его собственного класса, он Objectне может требовать, чтобы он был частью интерфейса.
Джошуа Блох использует ключевые слова «естественный порядок», когда объясняет, почему класс может захотеть реализовать Comparable. Не каждый класс имеет естественный порядок, как я упоминал в моих примерах выше, поэтому не каждый класс должен реализовывать и Comparableне должен Objectиметь compareToметод.
... compareToметод не объявлен в Object. ... Он похож по своему характеру Object«S equalsметоде, за исключением того, что она позволяет сравнивать порядок , в дополнении к простым сравнению равенства, и это является общим. Реализуя Comparable, класс указывает, что его экземпляры имеют естественный порядок .
Эффективная Java, второе издание : Джошуа Блох. Пункт 12, стр. 62. Эллипсы удаляют ссылки на другие главы и примеры кода.
Для случаев , когда вы действительно хотите , чтобы наложить упорядочение на не- Comparableкласса , который не имеет естественный порядок, вы всегда можете поставить Comparatorэкземпляр для помощи разбирайтесь.