
Data Structure
Networking
RDBMS
Operating System
Java
MS Excel
iOS
HTML
CSS
Android
Python
C Programming
C++
C#
MongoDB
MySQL
Javascript
PHP
- Selected Reading
- UPSC IAS Exams Notes
- Developer's Best Practices
- Questions and Answers
- Effective Resume Writing
- HR Interview Questions
- Computer Glossary
- Who is Who
Rules for Local Variable in Lambda Expression in Java
A lambda expression can capture variables like local and anonymous classes. In other words, they have the same access to local variables of the enclosing scope. We need to follow some rules in case of local variables in lambda expressions.
- A lambda expression can't define any new scope as an anonymous inner class does, so we can't declare a local variable with the same which is already declared in the enclosing scope of a lambda expression.
- Inside lambda expression, we can't assign any value to some local variable declared outside the lambda expression. Because the local variables declared outside the lambda expression can be final or effectively final.
- The rule of final or effectively final is also applicable for method parameters and exception parameters.
- The this and super references inside a lambda expression body are the same as their enclosing scope. Because lambda expressions can't define any new scope.
Example
import java.util.function.Consumer; public class LambdaTest { public int x = 1; class FirstLevel { public int x = 2; void methodInFirstLevel(int x) { Consumer<Integer> myConsumer = (y) -> { // Lambda Expression System.out.println("x = " + x); System.out.println("y = " + y); System.out.println("this.x = " + this.x); System.out.println("LambdaTest.this.x = " + LambdaTest.this.x); }; myConsumer.accept(x); } } public static void main(String args[]) { final LambdaTest outerClass = new LambdaTest(); final LambdaTest.FirstLevel firstLevelClass = outerClass.new FirstLevel(); firstLevelClass.methodInFirstLevel(10); } }
Output
x = 10 y = 10 this.x = 2 LambdaTest.this.x = 1
Advertisements