Sobes.tech
Назад к вопросам
Middle
6

Какие функциональные интерфейсы знаешь? Можешь привести примеры?

Компании, где спрашивали
Лоция

Ответ от нейросети

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
    

Эти интерфейсы широко используются для функционального программирования, обработки коллекций и потоков.