Интерфейсы. Условие реализации интерфейса классом

Изучаю java, возник следующий вопрос по интерфейсам. Для использования статического метода sort() из класса Arrays для объектов некого класса, должно соблюдаться условие, что данный класс реализует интерфейс Comparable, а именно метод compareTo(Object o).

Я нигде так и не смог найти толкового объяснения данному явлению. Буду крайне признателен, если кто-то объяснит почему надо реализовать интерфейс, чтобы воспользоваться методом. Спасибо.


Ответы (1 шт):

Автор решения: Alexey R.

Потому что код сортировки должен как-то сравнивать объекты между собой, чтобы их отсортировать. Но сам алгоритм сравнения он не содержит (ведь одно дело сравнивать числа, другое - строки, третье - сложные структуры - всего не предусмотришь). Вместо этого, он предлагает внешнему коду передать этот алгоритм сравнения в виде объекта.

Но объекты могут быть какими угодно. А коду сортировки нужен только объект которым этот код умеет пользоваться. Поэтому он сообщает внешнему миру, что он умеет пользоваться только объектами, которые реализуют интерфейс Comparable.

Таким образом, код сортировки уверен, что получив такой объект, у него будет доступный публичный метод compareTo, которым код сортировки сможет воспользоваться для сравнения двух элементов сортируемого множества.

→ Ссылка