Чем анонимный внутренний класс отличается от лямбды?
Лямбда выражения, используемые в языке Java, считаются синтаксическим сахаром и отличаются легковесным синтаксисом. При их применении не требуется задавать тип реализуемого функционального интерфейса, его компилятор определяет из контекста.
У анонимного внутреннего класса могут быть поля, и можно менять их значение и класс сберегает состояние этих полей между двумя вызовами. Для лямбда-выражения доступен только захват и переменные effectively final.
Анонимный внутренний класс можно использовать для расширения любого имеющегося класса или реализовать существующий внешний интерфейс, в котором больше одной абстрактной функции. Также лямбда-выражение способно реализовать интерфейс, имеющий не более одной абстрактной функции.
Анонимный внутренний класс использует свой скоуп, а лямбда общий. Поэтому, в лямбда невозможно объявить переменную с существующим именем, в этом случае компилятор выдаст ошибку «varable is already defned». В анонимном классе такая переменная будет использоваться как локальная, и действовать только внутри класса (внешняя будет скрыта). Для лямбды не создаётся отдельный файл *.class, поэтому, вместо загрузки и верификации применяется invokedynamic, то есть класс создаётся на лету, используя LambdaMetafactory. В результате лямбда выигрывают в скорости выполнения.
Peer-to-peer собеседования
AI Sprints — обучение профессиям с ИИ
Практика собеседований с менторами и другими студентами. Реальные вопросы по Kotlin, Android и Backend
- Живые собеседования: практикуйте интервью с менторами и коллегами-студентами
- Реальные вопросы: база вопросов по Kotlin, Android, Backend и QA
- Фидбек: обратная связь после каждого собеседования — знаете, что улучшить
AI Challenge — собери чат-бота за 5 дней
Бесплатный марафон по AI-инжинирингу. Cursor + OpenAI, 60 минут в день — без опыта в программировании. К пятнице у вас будет рабочий чат-бот с памятью в браузере.
- Практика с первого дня, без теории «в стол»
- Готовый проект в портфолио к концу недели
- Старт в любой день — учитесь в своём темпе