Недавно ознакомился с лямбда-выражениями и узнал, что с их помощью можно реализовать Comparator. Но мне не даёт покоя то, что в этом интерфейсе объявлено два не статических и не реализованных по умолчанию метода: compare() и equals(). И несмотря на это, интерфейс считается функциональным, и метод compare() может быть реализован с помощью лябда-выражений.
Как так? Почему метод equals() не воспринимается?
Ответ
Интерфейс Comparator функциональный, потому что equals() - относится к public-методу класcа Object.
Интерфейсы объявляют абстрактные методы относящиеся к public методам Object, но обычно делают это неявным образом и эти методы не учитываются.
Комментариев нет:
Отправить комментарий