Логотип YeaHub

База вопросов

Собеседования

Тренажёр

База ресурсов

Обучение

Навыки

Задачи

Войти

Выбери, каким будет IT завтра — вместе c нами!

YeaHub — это полностью открытый проект, призванный объединить и улучшить IT-сферу. Наш исходный код доступен для просмотра на GitHub. Дизайн проекта также открыт для ознакомления в Figma.

© 2026 YeaHub

AI info

Карта сайта

Документы

Медиа

Назад
Вопрос про Java: lambda, functional interface, Java, anonymous class

Как связаны лямбды и функциональные интерфейсы?

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

Короткий ответ

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

Длинный ответ

Связь лямбд и функциональных интерфейсов

Лямбда-выражения в Java тесно связаны с функциональными интерфейсами. Функциональный интерфейс — это интерфейс, который содержит ровно один абстрактный метод (например, Runnable, Comparator, Predicate). Лямбда-выражение предоставляет реализацию этого единственного метода, заменяя громоздкие анонимные классы.

Как это работает

Когда вы пишете лямбду, компилятор Java определяет, какой функциональный интерфейс она реализует, по контексту (например, тип переменной или параметра метода). Лямбда не создает отдельный класс, а генерирует байт-код, который вызывает метод интерфейса.

Пример кода

// Функциональный интерфейс
@FunctionalInterface
interface Calculator {
    int operate(int a, int b);
}

public class Main {
    public static void main(String[] args) {
        // Лямбда реализует метод operate
        Calculator add = (a, b) -> a + b;
        System.out.println(add.operate(5, 3)); // 8

        // Анонимный класс (эквивалент)
        Calculator multiply = new Calculator() {
            @Override
            public int operate(int a, int b) {
                return a * b;
            }
        };
        System.out.println(multiply.operate(5, 3)); // 15
    }
}

Применение

Лямбды широко используются в Stream API, обработке событий, многопоточности и коллекциях. Они позволяют передавать поведение как данные, делая код более декларативным.

Вывод: Лямбды и функциональные интерфейсы неразрывно связаны: лямбда — это синтаксический сахар для реализации функционального интерфейса. Используйте их для упрощения кода, особенно при работе с коллекциями и потоками данных.

Уровень

  • Рейтинг:

    4

  • Сложность:

    4

Навыки

  • Java

    Java

Ключевые слова

#lambda

#functional interface

#Java

#anonymous class

Подпишись на Java Developer в телеграм