Functional Programming With Java 简明教程

Functional Programming - First Class Function

如果一个函数满足以下要求,则它被称为头等函数。

  1. 它可以作为参数传递给函数。

  2. 它可以从函数返回。

  3. 它可以分配给变量,然后可以在以后使用。

Java 8 通过 lambda 表达式支持作为一等对象的功能。lambda 表达式是一种函数定义,可以分配给变量,可以作为参数传递并且可以被返回。请参阅以下示例:

@FunctionalInterface
interface Calculator<X, Y> {
   public X compute(X a, Y b);
}

public class FunctionTester {
   public static void main(String[] args) {
      //Assign a function to a variable
      Calculator<Integer, Integer> calculator = (a,b) -> a * b;

      //call a function using function variable
      System.out.println(calculator.compute(2, 3));

      //Pass the function as a parameter
      printResult(calculator, 2, 3);

      //Get the function as a return result
      Calculator<Integer, Integer> calculator1 = getCalculator();
      System.out.println(calculator1.compute(2, 3));
   }

   //Function as a parameter
   static void printResult(Calculator<Integer, Integer> calculator, Integer a, Integer b){
      System.out.println(calculator.compute(a, b));
   }

   //Function as return value
   static Calculator<Integer, Integer> getCalculator(){
      Calculator<Integer, Integer> calculator = (a,b) -> a * b;
      return calculator;
   }
}

Output

6
6
6