"Лямбда-выражение можно записать там, где используется тип-интерфейс с одним-единственным методом".
То есть если у интерфейса много методов, лямбда-выражение нельзя использовать? Или что это значит? Можете показать на примере, когда я не могу использовать лямбда-выражение ?
Vadimayer
40 уровень
Что означает эта фраза? (Лямбда-выражение)
Решен
Комментарии (5)
- популярные
- новые
- старые
Для того, чтобы оставить комментарий Вы должны авторизоваться
Justinian Judge в Mega City One Master
13 сентября 2021, 07:35
суть лямбд в том, что это реализация анонимного метода.
Например есть интерфейс Vadimayer и я пишу реализацию анонимного метода:
() -> System.out.println("Hello world!);
а теперь внимание вопрос, если в интерфейсе Vadimayer будет много методов без реализации:
void hello();
void byeBye();
void thankYou();
и тд
как компилятор будет знать к чему твоя реализация?
Ну есть вариант, по сигнатуре, но это слишком заморочено и не отнимает проблемы двух абстрактных методов с одинаковой сигнатурой.
А так все просто, один абстрактный метод, и наша лямбда ее реализует.
Но при этом речь идет о том, что функциональный интерфейс может содержать МНОГО методов:
- любое количество методов с реализцией
- абстрактные методы переопределяющие методы Object()
(по крайней мере было раньше, когда лямбды компилировались в анонимные классы, в последних JDK лямбды частично компилируются как методы)
(эти методы можно оставлять абстрактными (hashCode, equals и тд) поскольку имплементация этого интерфейса это класс, а любой класс наследует методы Object, поэтому функциональный интерфейс может содержать 2 и больше абстрактных метода, но если это методы Object, то они по умолчанию имплементированы в каждом классе, а значит на этапе реализации они никогда абстрактными не будут, об этом моменте прямо указано в документации к аннотации FunctionalInterface
НО только 1 метод должен быть абстрактным (кроме Обджект метдов).
+2
KIRAExpert
12 августа 2021, 16:54полезный
https://javarush.com/groups/posts/845-lambda-vihrazhenija-na-primerakh
+1
Vadimayer
12 августа 2021, 16:57
спасибо
0
Максим Глотов
12 августа 2021, 17:07
Кстати, нигде не нашел четкого определения - что такое Лямбда-выражение. Даже по вашей ссылке - лямбда-выражение это... если можно так назвать... проще говоря... короче говоря... и никакой конкретики.
Также нигде не раскрыто, почему именно Лямбда? откуда пошло такое название?
Вроде как все понимают, что всё это значит - но четко объяснить никто не может.
0
Wladyslaw Java Developer Master
12 августа 2021, 17:16
Смотреть сюда, если есть желание.
Но типичному джава разработчику оно не надо в 99% случаев.
+2