В Java функциональные интерфейсы представляют собой интерфейсы, содержащие только один абстрактный метод. Они используются для создания лямбда-выражений и анонимных классов, что позволяет передавать поведение в качестве аргументов методов или сохранять его в переменных.
Вот несколько примеров функциональных интерфейсов в Java:
- Consumer (Потребитель) - принимает аргумент и выполняет некоторое действие, но не возвращает результат. Например:
Consumer<String> printUpperCase = str -> System.out.println(str.toUpperCase());
printUpperCase.accept("hello"); // Выводит "HELLO"
- Supplier (Поставщик) - не принимает аргументов, но возвращает результат. Например:
Supplier<Double> getRandomNumber = () -> Math.random();
double number = getRandomNumber.get();
System.out.println(number); // Выводит случайное число
- Function (Функция) - принимает аргумент и возвращает результат. Например:
Function<Integer, String> convertToString = num -> String.valueOf(num);
String str = convertToString.apply(42);
System.out.println(str); // Выводит "42"
- Predicate (Предикат) - принимает аргумент и возвращает логическое значение. Например:
Predicate<Integer> isEven = num -> num % 2 == 0;
boolean result = isEven.test(4);
System.out.println(result); // Выводит "true"
- UnaryOperator (Унарный оператор) - принимает и возвращает аргумент того же типа. Например:
UnaryOperator<Integer> square = num -> num * num;
int result = square.apply(5);
System.out.println(result); // Выводит "25"
Это лишь некоторые из множества функциональных интерфейсов, предоставляемых в Java. Они позволяют более гибко и эффективно использовать функциональное программирование в Java.
Если вам понравилось, буду признателен за подписку.