Можешь ли ты перечислить и объяснить основные функциональные интерфейсы, использующиеся в Java?
Ответ от нейросети
sobes.tech AI
В Java функциональные интерфейсы — это интерфейсы с одним абстрактным методом, которые можно использовать в лямбда-выражениях и ссылках на методы.
Основные функциональные интерфейсы из пакета java.util.function:
-
Function<T, R> — принимает объект типа T и возвращает объект типа R.
Function<String, Integer> lengthFunc = s -> s.length(); int len = lengthFunc.apply("Hello"); // 5 -
Consumer<T> — принимает объект типа T и ничего не возвращает (выполняет действие).
Consumer<String> printer = s -> System.out.println(s); printer.accept("Hello"); -
Supplier<T> — не принимает аргументов, возвращает объект типа T.
Supplier<Double> randomSupplier = () -> Math.random(); double val = randomSupplier.get(); -
Predicate<T> — принимает объект типа T и возвращает boolean.
Predicate<String> isEmpty = s -> s.isEmpty(); boolean result = isEmpty.test(""); // true -
UnaryOperator<T> — наследуется от Function, принимает и возвращает объект одного типа T.
-
BinaryOperator<T> — принимает два объекта типа T и возвращает объект типа T.
Эти интерфейсы позволяют писать компактный и выразительный код, особенно при работе с потоками (Streams) и коллекциями.