Поставщик готовых значений в Java
Supplier не принимает аргументов и каждый вызов
get отдаёт новое или закэшированное значение.
Тип результата задают параметром T в
Supplier<T>.
Поставщик заголовка по умолчанию для черновика:
import java.util.function.Supplier;
Supplier<String> defaultTitle = () -> "untitled";
Получение значения:
public class Main {
public static void main(String[] args) {
Supplier<String> defaultTitle = () -> "untitled";
System.out.println(defaultTitle.get());
}
}
Сервис может запрашивать заголовок у поставщика, если поле ещё пустое:
import java.util.function.Supplier;
class Draft {
String resolveTitle(String current, Supplier<String> fallback) {
if (current == null || current.isBlank()) {
return fallback.get();
}
return current;
}
}
Пример вызова с лямбдой-поставщиком:
Draft draft = new Draft();
String title = draft.resolveTitle(" ", () -> "new post");
Сделайте Supplier<Integer> pageSize, возвращающий
20. Выведите результат двух вызовов get()
и убедитесь, что оба раза 20.