Uncategorized

Closure in Java

A closure is an inner function that has access to the outer function even after the scope of outer function.This is a common programming concept in JavaScript, but we can achieve the same thing in java with the advent of JDK8 and functional programming.

here is a small java program which explains the closure concept in java,

/**
 * This program explains the closure in java. This is achieved by using functional programming in JDK 8.
 */
package lambdas;

/**
 * @author prabhu kvn
 *
 */
public class LambdaClosureConcept {

	public LambdaClosureConcept() {
	}

	public static void main(String[] args) {
		LambdaClosureConcept obj = new LambdaClosureConcept();
		obj.execute();
	}

	private void execute() {
		LambdaClosure fn = getFunction();
		System.out.println(fn.changeVal(10));

	}

	/**
	 * The "local" variable which got trapped in closure function.
	 * 
	 * @return
	 */
	private LambdaClosure getFunction() {
		int local = 89;
		LambdaClosure fn = (int i) -> {
			return i * local;
		};

		return fn;

	}

}

// Functional interface
@FunctionalInterface
interface LambdaClosure {

	int changeVal(int i);
}