Назад к вопросам
Middle
77
questionbank

Для чего используются функциональные интерфейсы UnaryOperator<T>, DoubleUnaryOperator, IntUnaryOperator и LongUnaryOperator?

Sobes Copilot

Получайте ответы в реальном времени

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

sobes.tech AI

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

  • UnaryOperator<T>: Принимает аргумент типа T и возвращает результат типа T. Является специализацией Function<T, T>.

    java.util.function.UnaryOperator<Integer> increment = x -> x + 1;
    int result = increment.apply(5); // result = 6
    
  • DoubleUnaryOperator: Принимает аргумент типа double и возвращает результат типа double.

    java.util.function.DoubleUnaryOperator square = x -> x * x;
    double result = square.applyAsDouble(2.5); // result = 6.25
    
  • IntUnaryOperator: Принимает аргумент типа int и возвращает результат типа int.

    java.util.function.IntUnaryOperator negate = x -> -x;
    int result = negate.applyAsInt(10); // result = -10
    
  • LongUnaryOperator: Принимает аргумент типа long и возвращает результат типа long.

    java.util.function.LongUnaryOperator powerOfTwo = x -> 1L << x;
    long result = powerOfTwo.applyAsLong(3); // result = 8
    

Они чаще используются при работе с потоками (Stream API) или в качестве параметров методов, когда требуется передать логику преобразования одного значения в другое того же типа. Специализированные версии (Double, Int, Long) предотвращают автобоксинг/анбоксинг при работе с примитивными типами, что повышает производительность.