Как в Java реализованного функциональное программирование

«Как в Java реализованного функциональное программирование» — вопрос из категории Java, который задают на 23% собеседований Android Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

В Java функциональное программирование реализуется через лямбда-выражения, функциональные интерфейсы и Stream API.

1. Лямбда-выражения
Позволяют передавать функции как аргументы:

Runnable task = () -> System.out.println("Hello, FP!");

2. Функциональные интерфейсы
Интерфейсы с одним абстрактным методом (@FunctionalInterface):

Function<Integer, Integer> square = x -> x * x;
System.out.println(square.apply(5)); // 25

3. Stream API
Обработка коллекций в функциональном стиле:

List<Integer> numbers = Arrays.asList(1, 2, 3);
List<Integer> squares = numbers.stream()
    .map(x -> x * x)
    .collect(Collectors.toList());

Также есть методы по умолчанию в интерфейсах и ссылки на методы (ClassName::method).