Как Java-компилятор решил лямбда-тип возвращаемого значения, в то время как метод Predicate может возвращать только логическое значение? - PullRequest
0 голосов
/ 20 ноября 2018

Что я не могу понять, так это то, что мы знаем, что java не поддерживает динамический тип, даже использует Lambda, и он компилируется в Predictor во время компиляции.

Я не могу понять, что метод Predicator по умолчанию может возвращать только логическое значение, а лямбда-выражение может возвращать что угодно.Как это заархивировано?

1 Ответ

0 голосов
/ 20 ноября 2018

while Lambda expression can return anything. Это неправильно

Лямбда-выражение записывается в соответствующий абстрактный метод в интерфейсе функции

Рассматривая Predicate в качестве примера, лямбдавыражение будет записано в соответствующий абстрактный метод, который boolean test(T t)

Из документов Java здесь с ясным примером

ФункциональныйИнтерфейс - это любой интерфейс, который содержит только один абстрактный метод.(Функциональный интерфейс может содержать один или несколько стандартных методов или статических методов.) Поскольку функциональный интерфейс содержит только один абстрактный метод, вы можете опустить имя этого метода при его реализации.Для этого вместо использования анонимного выражения класса используется лямбда-выражение, которое выделяется в следующем вызове метода:

См. Подход 5. Укажите код критериев поиска с помощью лямбда-выражения

См. Подход 6. Использование стандартных функциональных интерфейсов с лямбда-выражениями

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...