Здравствуйте. Изучаю сейчас лямбда выражения . Почти все понял. 3 вопроса:
1)Как я понял лямбда выражение передают обьект анонимного класса.
Этот обьект можно присвоить переменой функционального интерфейса если параметры и тип единственного метода совпадают.
2)Если я все правильно понял, то прошу пояснить когда лучше пользоваться лямбдой а когда переопределять метод.
3)Можно ли лямбду присвоить не интерфейсу
Alexandr Grishin
27 уровень
Про лямбда
Комментарии (7)
- популярные
- новые
- старые
Для того, чтобы оставить комментарий Вы должны авторизоваться
jv.tab
23 сентября 2020, 00:57
Они очень удобны в Steam API, т.е. функциональном программировании - очень хорошо лябды передовать в качестве параметра или переменной.
0
Стас Пасинков Software Developer в Zipy Master
21 сентября 2020, 12:01
2. если код лямбды занимает больше 3х строк - тогда думаю о том, чтобы вынести этот код куда-то в отдельное место.
3. интересный вопрос. а чему например? :)
0
Alexandr Grishin
21 сентября 2020, 12:33
Сейчас лямбду пытался присвоить ссылке абстрактного класса которая наследует функциональный интерфейс. IDEA пишет - target type of a lambda conversion must be an interface.
+1
Евгений Backend Developer в KHAN Group Expert
19 сентября 2020, 10:23
2. Всегда пользуйся лямбдой. В каком смысле переопределять метод? У тебя есть функциональный интерфейс, его можно реализовать лямбдой, можно анонимным классом. Это одно и то же, только лямбда короче и зачастую понятней.
3. Нет. Лямбда используется только тогда, когда ты реализуешь функциональный интерфейс. Это интерфейс, у которого есть только один абстрактный метод. Например, есть функциональный интерфейс Comparator, у него только один абстрактный метод
Вместо того чтобы писать
пиши вот так:
Больше тебе нигде лямбда не пригодятся. Единственное, для чего они предназначены - для реализация функциональный интерфейсов. +2
Alexandr Grishin
19 сентября 2020, 17:16
Понятно. Только из примера как понимаю всегда сравниваемые объекты будут равны
0
Евгений Backend Developer в KHAN Group Expert
20 сентября 2020, 13:32
Разумеется.
Вот так можно:
Или вот так (с референсными методами)
Впрочем, я могу ошибаться. Я не помню точный синтаксис компэйра. 0
Di Ma Java Developer в Сбер
17 сентября 2020, 16:52
Лямбда это по сути реализация метода функционального интерфейса в удобочитаемом виде, такое аля функциональное программирование, т.е. что бы сложить 2 числа мне не надо проектировать объект, потом его создавать, потом дергать его метод, я просто беру функциональный интерфейс и реализую ее, получая нужный результат.
+2