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.