Параметры лямбда-выражения в Java
Параметры лямбды повторяют сигнатуру абстрактного метода интерфейса. Если параметр один и тип выводится из контекста, скобки и тип можно опустить. Контракт с одним аргументом объявляют так:
@FunctionalInterface
interface TitleRule {
boolean ok(String title);
}
Короткая запись без типа и без скобок:
TitleRule shortForm = title -> !title.isBlank();
Полная форма с типом полезна, когда вывод типов неочевиден:
TitleRule explicit = (String title) -> !title.isBlank();
Для двух параметров скобки обязательны. Контракт сравнения двух заголовков и лямбда к нему:
@FunctionalInterface
interface TitlePairRule {
boolean ok(String left, String right);
}
TitlePairRule sameLength = (left, right) ->
left.length() == right.length();
Интерфейс без параметров требует пустые скобки слева от стрелки:
@FunctionalInterface
interface DraftMode {
boolean enabled();
}
DraftMode alwaysOn = () -> true;
Объявите TitlePairRule и лямбду startsSame,
которая сравнивает первые три символа двух строк
(достаточно длинных). Проверьте пару "java"
и "javascript".