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
How to use this and super keywords with lambda expression in Java?
The "this" and "super" references within a lambda expression are the same as in the enclosing context. Since the lambda expression doesn't define a new scope, "this" keyword within a lambda expression signifies "this" parameter of a method where the lambda expression is residing.
In the below example, this.toString() calls the toString() method of the LambdaTest object but not the toString() method of the Operate instance.
Example
@FunctionalInterface
interface Operate {
int func(int num1, int num2);
public String toString();
}
public class LambdaTest {
public static void main(String[] args) {
LambdaTest test = new LambdaTest();
test.getResult();
}
public void getResult() {
Operate op = (num1, num2) -> { // lambda expression
System.out.println("This hashcode: " + this.hashCode());
System.out.println("Calling toString(): "+ this.toString());
return num1 + num2;
};
System.out.println("Result is: "+ funcInt.func(10, 7));
}
@Override
public String toString() {
System.out.println("Super hashcode: " + super.hashCode());
return Integer.toString(super.hashCode());
}
}
Output
This hashcode: 142257191 Super hashcode: 142257191 Calling toString(): 142257191 Result is: 17
Advertisements