Класс Supplier
Класс Supplier - это функциональный интерфейс из пакета
java.util.function, который представляет поставщика
значений. Он не принимает никаких аргументов, но возвращает
результат типа T. Единственный абстрактный метод
этого интерфейса - get, который и выполняет
основную работу: возвращает значение. Класс часто
используется для ленивого создания объектов, генерации
значений и в методах Stream, таких как generate.
Синтаксис
@FunctionalInterface
public interface Supplier<T>
{
T get();
}
Пример
Давайте создадим простейший Supplier, который
возвращает строку:
import java.util.function.Supplier;
public class Main
{
public static void main(String[] args)
{
Supplier<String> supplier = () -> "abcde";
System.out.println(supplier.get());
}
}
Результат выполнения кода:
"abcde"
Пример
Давайте создадим Supplier, который генерирует
случайное число:
import java.util.function.Supplier;
public class Main
{
public static void main(String[] args)
{
Supplier<Double> supplier = () -> Math.random();
System.out.println(supplier.get());
}
}
Результат выполнения кода:
0.123456789
Пример
Давайте используем Supplier вместе с методом
generate для создания потока из пяти строк:
import java.util.stream.Stream;
public class Main
{
public static void main(String[] args)
{
Stream<String> stream = Stream.generate(() -> "abcde").limit(5);
stream.forEach(System.out::println);
}
}
Результат выполнения кода:
"abcde"
"abcde"
"abcde"
"abcde"
"abcde"
Пример
Давайте используем Supplier для ленивого создания
списка:
import java.util.List;
import java.util.function.Supplier;
public class Main
{
public static void main(String[] args)
{
Supplier<List<Integer>> supplier = () -> List.of(1, 2, 3, 4, 5);
System.out.println(supplier.get());
}
}
Результат выполнения кода:
[1, 2, 3, 4, 5]