Найти тему
DEBAGanov

Java 1107. Что такое «функциональные интерфейсы»?

"Функциональные интерфейсы" в Java - это интерфейсы, которые содержат только один абстрактный метод. Они предназначены для использования с лямбда-выражениями (lambda expressions) и методами ссылок (method references) в Java 8 и выше.

Java предоставляет несколько встроенных функциональных интерфейсов в пакете java.util.function, таких как Predicate, Consumer, Function, Supplier и другие. Каждый из этих интерфейсов представляет функцию, которую можно передать в качестве аргумента или вернуть как результат из другого метода, что делает возможным написание более конкретного кода, чем это было раньше.

Например, Predicate представляет функцию, которая принимает один аргумент и возвращает значение типа boolean.

Интерфейс Function представляет функцию, которая принимает один аргумент и возвращает значение другого типа.

Consumer представляет функцию, которая принимает один аргумент и ничего не возвращает, а Supplier представляет функцию, которая ничего не принимает и возвращает значение.

Использование функциональных интерфейсов вместе с лямбда-выражениями позволяет более эффективно и просто передавать функции в другие методы и создавать новые функции внутри других методов.

Пример использования интерфейса Function:

import java.util.function.Function;

public class Example {
public static void main(String[] args) {
Function<Integer, Integer> square = x -> x * x;
System.out.println(square.apply(5)); // выводит на экран 25 }
}

Этот код создает новую функцию square, которая принимает целое число и возвращает его квадрат. Затем мы вызываем эту функцию и передаем ей число.

Еще примеры:

Predicate<String> isLong = s -> s.length() > 10;
boolean result = isLong.test("This is a very long string");
System.out.println(result); // Output: true
Consumer<String> printUpperCase = s -> System.out.println(s.toUpperCase());
printUpperCase.accept("hello"); // Output: HELLO
Supplier<Double> randomDouble = () -> Math.random();
double value = randomDouble.get();
System.out.println(value); // Output: a random double value between 0.0 and 1.0

1606 вопрос-ответ по Java: https://github.com/DEBAGanov/interview_questions

Tелеграмм канал: https://t.me/DEBAGanov

Мое резюме: https://github.com/DEBAGanov