Expresii Lambda în Java — Sintaxă și Functional Interfaces
In this tutorial, you'll learn about Expresii Lambda în Java. We cover key concepts, practical examples, and best practices.
Expresiile lambda sunt funcții anonime introduse în Java 8 care permit scrierea de cod funcțional concis, înlocuind clasele anonime verbose și lucrând împreună cu interféțele funcționale (interfețe cu o singură metodă abstractă).
The Problem
Clasele anonime în Java sunt verbose și greu de citit. Acest quick-fix îți arată cum să folosești expresii lambda pentru a scrie cod mai scurt și mai expresiv.
The Wrong Way
button.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
System.out.println("Clicked!");
}
});
Output:
Clicked! // dar codul e mult prea verbose
The Right Way
button.addActionListener(e -> System.out.println("Clicked!"));
Output:
Clicked!
Step-by-Step Fix
1. Identifică o interfață funcțională
O interfață cu o singură metodă abstractă (SAM — Single Abstract Method):
@FunctionalInterface
interface Calculator {
int calculate(int a, int b);
}
2. Înlocuiește clasa anonimă cu lambda
// Clasă anonimă
Calculator add = new Calculator() {
@Override
public int calculate(int a, int b) { return a + b; }
};
// Lambda
Calculator add = (a, b) -> a + b;
3. Variante de sintaxă
x -> x * 2 // un parametru, fără paranteze
(a, b) -> a + b // doi parametri
() -> Math.random() // fără parametri
(String s) -> s.length() // tip explicit
(int a, int b) -> { return a + b; } // corp cu acolade
Prevention Tips
- Adnotarea
@FunctionalInterfaceasigură că interfața rămâne funcțională - Folosește method references (
String::length) când lambda doar apelează o metodă - Nu scrie lambde prea lungi — extrage-le în metode numite
- Preferă interfețele funcționale standard (
Predicate,Function,Consumer) în loc să creezi altele noi
Common Mistakes
- Paranteze lipsă la zero parametri —
() -> expre corect,-> exprnu. - Confuzia între
ConsumerșiFunction—Consumerprimește un parametru și returnează void,Functionreturnează o valoare. - Mutation de variabile externe — variabilele capturate trebuie să fie effectively final.
FAQ
Construit de dezvoltatorii Doda Browser, DodaZIP și Durga Antivirus Pro. Instrumentele DodaTech se integrează perfect cu Java pentru productivitate și securitate sporite.
Built by the developers of DodaTech
Doda Browser, DodaZIP & Durga Antivirus Pro