Какие функциональные интерфейсы знаешь? Можешь привести примеры?
Ответ от нейросети
sobes.tech AI
В Java функциональные интерфейсы — это интерфейсы с одним абстрактным методом, которые можно использовать с лямбда-выражениями и ссылками на методы.
Основные примеры из пакета java.util.function:
-
Predicate<T> — принимает объект типа T, возвращает boolean. Пример: проверка, является ли число положительным.
Predicate<Integer> isPositive = x -> x > 0; System.out.println(isPositive.test(5)); // true -
Function<T, R> — принимает T, возвращает R. Пример: преобразование строки в длину.
Function<String, Integer> length = s -> s.length(); System.out.println(length.apply("Hello")); // 5 -
Consumer<T> — принимает T, ничего не возвращает. Пример: вывод строки в консоль.
Consumer<String> printer = s -> System.out.println(s); printer.accept("Hello"); -
Supplier<T> — не принимает аргументов, возвращает T. Пример: генерация случайного числа.
Supplier<Double> random = () -> Math.random(); System.out.println(random.get()); -
UnaryOperator<T> — принимает и возвращает один и тот же тип T. Пример: удвоение числа.
UnaryOperator<Integer> doubler = x -> x * 2; System.out.println(doubler.apply(4)); // 8 -
BinaryOperator<T> — принимает два аргумента типа T и возвращает T. Пример: сумма двух чисел.
BinaryOperator<Integer> adder = (a, b) -> a + b; System.out.println(adder.apply(3, 7)); // 10
Эти интерфейсы широко используются для функционального программирования, обработки коллекций и потоков.