在Java中如何使用lambda和方法引用实现DoubleUnaryOperator?

DoubleUnaryOperator 是在 java.util.function 包中定义的函数接口。这个函数接口需要一个 double 类型的参数作为输入,但是产生相同类型的输出。DoubleUnaryOperator 接口可用作 lambda 表达式和方法引用的赋值目标。这个接口包含一个抽象方法: applyAsDouble ()、一个静态方法: identity ()和两个缺省方法: andThen ()和 compose ()。

语法

@FunctionalInterface
public interface DoubleUnaryOperator {
   double applyAsDouble(double operand);
}

Lambda表达式示例

import java.util.function.DoubleUnaryOperator;

public class DoubleUnaryOperatorTest1 {
   public static void main(String[] args) {      
   DoubleUnaryOperator getDoubleValue = doubleValue -> {     // lambda 表达式
         return doubleValue * 2;
      };
      double input = 20.5;
      double result = getDoubleValue.applyAsDouble(input);
      System.out.println("输入值 " + input + " X 2 为: " + result);

      input = 77.50;
      System.out.println("输入值 " + input+ " X 2 为: " + getDoubleValue.applyAsDouble(input));

      input = 95.65;
      System.out.println("输入值 "+ input+ " X 2 为: " + getDoubleValue.applyAsDouble(input));
}
}

输出结果

输入值 20.5 X 2 为: 41.0
输入值 77.5 X 2 为: 155.0
输入值 95.65 X 2 为: 191.3

方法引用示例

import java.util.function.DoubleUnaryOperator;

public class DoubleUnaryOperatorTest2 {
   public static void main(String[] args) {
      DoubleUnaryOperator d = Math::cos;    //方法引用    
      System.out.println("值为: " + d.applyAsDouble(45));

      DoubleUnaryOperator log = Math::log10;    //方法引用
      System.out.println("值为: " + log.applyAsDouble(100));
   }
}

输出结果

值为: 0.5253219888177297
值为: 2.0

.