Supplier
Поставщик: функция без аргументов, которая возвращает значение.
Доступно с: Java 8
Синтаксис
@FunctionalInterface
public interface Supplier<T> {
T get();
}Примеры
Отложенное создание значения:
void main() {
Supplier<List<String>> newList = ArrayList::new;
List<String> a = newList.get();
a.add("x");
IO.println(a + " " + newList.get());
Supplier<String> greeting = () -> "Hello at step " + a.size();
IO.println(greeting.get());
}Результат:
[x] []
Hello at step 1Примечания
Значение создаётся только при вызове get() — это используется в orElseGet(), Stream.generate(), CompletableFuture.supplyAsync() и computeIfAbsent(). Каждый вызов get() выполняет функцию заново.
См. также
- Consumer — Действие: принимает значение и ничего не возвращает.
- Optional.orElseGet() — Возвращает значение или вызывает функцию, чтобы создать запасной вариант.
- Stream.generate() — Создаёт бесконечный поток из значений функции-поставщика.
- CompletableFuture.supplyAsync() — Запускает вычисление асинхронно и возвращает `CompletableFuture`.
В учебнике
- Функциональные интерфейсы — Функциональные интерфейсы в Java: аннотация @FunctionalInterface, стандартные Function, Predicate, Consumer, Supplier и их комбинирование.