- 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
Differences between anonymous class and lambda expression in Java?
Anonymous class is an inner class without a name, which means that we can declare and instantiate class at the same time. A lambda expression is a short form for writing an anonymous class. By using a lambda expression, we can declare methods without any name.
Anonymous class vs Lambda Expression
- An anonymous class object generates a separate class file after compilation that increases the size of a jar file while a lambda expression is converted into a private method. It uses invokedynamic bytecode instruction to bind this method dynamically, which saves time and memory.
- We use this keyword to represent the current class in lambda expression while in the case of an anonymous class, this keyword can represent that particular anonymous class.
- Anonymous classes can be used in case of more than one abstract method while a lambda expression specifically used for functional interfaces.
- We need to provide the function body only in lambda expression while in the case of an anonymous class, we need to write the redundant class definition.
Example
public class ThreadTest { public static void main(String[] args) { Runnable r1 = new Runnable() { // Anonymous class @Override public void run() { System.out.println("Using Anonymous class"); } }; Runnable r2 = () -> { // lambda expression System.out.println("Using Lambda Expression"); }; new Thread(r1).start(); new Thread(r2).start(); } }
Output
Using Anonymous class Using Lambda Expression
Advertisements