Gymterview
junior

Для чего нужны функциональные интерфейсы UnaryOperator, DoubleUnaryOperator, IntUnaryOperator и LongUnaryOperator?

UnaryOperator<T> — специализация Function<T, T>, у которой тип аргумента и тип результата совпадают. Используется, когда нужно преобразовать значение, сохранив его тип: например, увеличить число, привести строку к верхнему регистру или нормализовать объект.

Пример
UnaryOperator<Integer> square = x -> x * x;
System.out.println(square.apply(5)); // 25

Примитивные специализации:

Интерфейс Работает с типом
UnaryOperator<T> T -> T
DoubleUnaryOperator double -> double
IntUnaryOperator int -> int
LongUnaryOperator long -> long

UnaryOperator часто встречается в методе List.replaceAll(), который применяет оператор к каждому элементу списка на месте (in-place).

На собеседовании: достаточно сказать, что UnaryOperator<T> — это Function<T, T>, и привести пример. Примитивные версии существуют для устранения autoboxing.