Возврат лямбды из метода в Java
Фабрика правил удобна, когда набор лямбд повторяется: метод по параметру собирает нужный контракт и возвращает его вызывающему коду.
Контракт проверки заголовка:
@FunctionalInterface
interface TitleRule {
boolean ok(String title);
}
Класс-фабрика возвращает лямбду с зашитым порогом длины:
class TitleRules {
static TitleRule minLength(int min) {
return title -> title.length() >= min;
}
}
Клиент получает правило и сразу применяет:
public class Main {
public static void main(String[] args) {
TitleRule rule = TitleRules.minLength(5);
System.out.println(rule.ok("news"));
System.out.println(rule.ok("hello"));
}
}
Другой порог - другой вызов фабрики, без дублирования тела лямбды в каждом месте:
TitleRule strict = TitleRules.minLength(8);
Добавьте в TitleRules метод startsWith(String prefix),
возвращающий лямбду проверки префикса. Проверьте
startsWith("java").ok("javascript") - результат
должен быть true.