How to use a final or effectively final variable in lambda expression in Java?


The effectively final variables refer to local variables that are not declared final explicitly and can't be changed once initialized. A lambda expression can use a local variable in outer scopes only if they are effectively final.

Syntax

(optional) (Arguments) -> body

In the below example, the "size" variable is not declared as final but it's effective final because we are not modifying the value of the "size" variable.

Example

interface Employee {
   void empData(String empName);
}
public class LambdaEffectivelyFinalTest {
   public static void main(String[] args) {
      int size = 100;
      Employee emp = name -> {        // lambda expression
               System.out.println("The employee strength is: " + size);
               System.out.println("The employee name is: " + name);
      };
      emp.empData("Adithya");
   }
}

Output

The employee strength is: 100
The employee name is: Adithya

Updated on: 10-Jul-2020

2K+ Views

Kickstart Your Career

Get certified by completing the course

Get Started
Advertisements