Назад к вопросам
Junior
104
questionbank
Расскажи о лямбда-выражениях и методах ссылки в контексте программирования на Java и их применении в Android-разработке.
Sobes Copilot
Получайте ответы в реальном времени
Ответ от нейросети
sobes.tech AI
Лямбда-выражения - это краткая нотация для создания анонимных функций. Позволяют передавать функциональность как аргумент метода или создавать функцию без указания её имени. Синтаксис: (параметры) -> { тело }. Используются для реализации интерфейсов с одним абстрактным методом (функциональные интерфейсы).
Применение в Android:
- Обработчики событий (clicks, touch events).
- Реализация интерфейсов слушателей (например,
OnClickListener,OnCompleteListener). - Работа со Stream API для обработки коллекций (фильтрация, преобразование).
// До Java 8
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Toast.makeText(context, "Clicked!", Toast.LENGTH_SHORT).show();
}
});
// С использованием лямбда-выражения
button.setOnClickListener(v -> {
Toast.makeText(context, "Clicked!", Toast.LENGTH_SHORT).show();
});
Методы ссылки - более компактный способ ссылаться на существующие методы или конструкторы, не выполняя их. Используются для замены лямбда-выражений, которые просто вызывают один метод.
Виды методов ссылок:
- Ссылка на статический метод:
Класс::имяСтатическогоМетода - Ссылка на метод экземпляра объекта:
объект::имяМетодаЭкземпляра - Ссылка на метод экземпляра произвольного объекта определённого типа:
Тип::имяМетодаЭкземпляра - Ссылка на конструктор:
Класс::new
Применение в Android:
- Сокращение лямбда-выражений при работе со слушателями.
- В Stream API для применения методов к элементам стрима.
// Лямбда-выражение
List<String> names = Arrays.asList("Alice", "Bob");
names.forEach(name -> System.out.println(name));
// Метод ссылка
names.forEach(System.out::println);
Преимущества:
- Улучшенная читаемость кода, особенно в случае простых операций.
- Более компактный код.
- Использование в Stream API делает обработку коллекций более функциональной и эффективной.