Сообщество RSS DEV

Какой тип у лямбда-выражения?

Лямбда-выражения должны иметь функциональный тип и не могут быть присвоены не функциональным типам, таким как Object. Присваивание лямбда-выражения переменной типа Object приведёт к ошибке компиляции. Однако присваивание лямбда-выражения переменной функционального интерфейса, например, Runnable, является корректным. Лямбда-выражения также могут передаваться непосредственно в качестве аргументов методов, и компилятор будет выводить тип на основе контекста. Ожидаемый тип лямбда-выражения, определяемый контекстом, называется целевым типом (Target Type). Целевой тип позволяет компилятору вывести тип лямбда-выражения и распознать, что одно и то же лямбда-выражение может представлять разные функциональные интерфейсы. Ссылочные методы (method references) также используют целевой тип для вывода, и одна и та же ссылочная ссылка на метод может адаптироваться к различным интерфейсам. Главное отличие лямбда-выражений от ссылочных методов заключается в том, что ссылочные методы обеспечивают более сильный вывод типа, поскольку тип более явный. Кроме того, допускается преобразование между совместимыми функциональными интерфейсами. Понимание целевого типа (Target Type) имеет важное значение для работы с лямбда-выражениями и ссылочными методами в Java.
favicon
dev.to
Qual é o tipo de uma expressão Lambda?
Create attached notes ...