Aspects

Java 8 Onwards

Functional Programming

Streams

Useful Resources

Functional Programming - Returning a Function



As a High Order function can return a function but how to implement using Java 8. Java 8 has provided Function interface which can accept a lambda expression. A high order function can return a lamdba expression and thus this high order function can be used to create any number of functions.

Syntax

// adder - High Order Function
// returns a function as lambda expression
Function<Integer, Integer> adder(Integer x){
   return y -> y + x;
}

...

// get a function
Function<Integer, Integer> addOne = adder(1);

// apply the function
//result = 4 + 1 = 5
Integer result = addOne.apply(4);

Example - Returning a Function

FunctionTester.java

package com.tutorialspoint;

import java.util.function.Function;

public class FunctionTester {    
   public static void main(String[] args) {               
      Function<Integer, Integer> addOne = adder(1);
      Function<Integer, Integer> addTwo = adder(2);
      Function<Integer, Integer> addThree = adder(3);

      //result = 4 + 1 = 5
      Integer result = addOne.apply(4);
      System.out.println(result);

      //result = 4 + 2 = 6
      result = addTwo.apply(4);
      System.out.println(result);

      //result = 4 + 3 = 7
      result = addThree.apply(4);
      System.out.println(result);
   }

   //adder - High Order Function
   //returns a function as lambda expression
   static Function<Integer, Integer> adder(Integer x){
      return y -> y + x;
   }
}

Output

Run the FunctionTester and verify the output.

5
6
7
Advertisements