Встречается на собеседованиях • сегодня

В чем разница между Lambda и анонимным классом

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

  1. Синтаксис - лямбды короче:
java
// Анонимный класс
Runnable r1 = new Runnable() {
    @Override
    public void run() {
        System.out.println("Hello");
    }
};

// Лямбда
Runnable r2 = () -> System.out.println("Hello");

text

2. **Область видимости** - лямбда видит final/effectively final переменные из внешнего контекста, а анонимный класс создает свою область видимости.

3. **Производительность** - лямбда не создает новый .class файл при компиляции, в отличие от анонимного класса.

4. **Ключевое слово this** - в лямбде this ссылается на внешний класс, в анонимном классе - на сам анонимный класс.

5. **Ограничения** - лямбды работают только с функциональными интерфейсами (один абстрактный метод), а анонимные классы могут реализовывать любые интерфейсы/классы.
Sophi
Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
Попробовать бесплатноArrow

Следующий вопрос

Это единственный вопрос по вашему фильтру

как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы