- Trending Categories
Data Structure
Networking
RDBMS
Operating System
Java
MS Excel
iOS
HTML
CSS
Android
Python
C Programming
C++
C#
MongoDB
MySQL
Javascript
PHP
Physics
Chemistry
Biology
Mathematics
English
Economics
Psychology
Social Studies
Fashion Studies
Legal Studies
- 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