57 подписчиков
🖥 Для чего нужны функциональные интерфейсы в Java?

⏩Зачем нужны функциональные интерфейсы, если вместо них можно использовать обычную функцию? Пример на картинке.
Так в чем отличие функции от функционального интерфейса? Когда стоит применять функциональный интерфейс, а когда - функцию?

⏩Во-первых, существует функциональный подход (ФП) к программированию, при котором мы можем оперировать методами (функциями) как переменными.
В Haskell, например, ФП встроен непосредственно, на синтаксическом уровне.
Также в некоторых языках (C и C++) можно использовать ссылки на методы, не те, которые в Java, а настоящие ссылки.

В Java нет ни того, ни другого, поэтому ФП в ней осуществляется посредством функциональных интерфейсов.

Когда мы пишем что-то вроде
(car) -> car.getOwner();
нам кажется, будто мы действительно объявляем функцию на месте и используем ФП. Но на деле для такой записи создаётся анонимный класс, расширяющий целевой интерфейс и реализующий метод в соответствии с тем, что написано после стрелки.

Упомянутая ссылка на метод — это просто способ ещё более коротко и изящно записать лямбда-выражение. Например, строка выше могла бы выглядеть так:
Car::getOwner

Для чего всё это нужно? Например, есть у нас список автомобилей, и нам нужно его преобразовать в список владельцев. К примеру, используя Stream API.

Очень грустно было бы для метода map() объявлять отдельный класс, имплементирующий целевой интерфейс и содержащий один простой метод, а потом в методе map() создавать объект от него с целью вызова этого самого метода.

Гораздо лучше написать короткую лямбду или вовсе ссылку на метод.

Использование лямбда-выражений сокращает и упрощает код, а также во многих случаях делает его более читаемым и выразительным.


4 месяца назад
49,1K подписчиков
Это как JavaScript? Нет! Программисты Java ценятся, они делают сложные проекты, особенно их любят в среде разработки под Android и в различных корпоративных сферах. Вот что это за язык и почему его стоит изучать...
4 года назад
116,9K подписчиков
В интернете полно статей на тему, как стать Java-разработчиком за месяц и зарабатывать сотни тысяч рублей в час. Но все они не упоминают две вещи — что это невозможно и что никто не будет платить начинающим программистам столько денег, потому что им просто не хватает квалификации. А единственный честный вариант добиться успеха в профессии — много учиться и практиковаться. И этому уже есть много подтверждений. Хотим рассказать, как выпускник Skillbox Аркадий за полтора года прошёл путь от новичка до middle-разработчика на языке Java...
8 месяцев назад