Middle
Ce sunt expresiile lambda în Java și ce funcționalități oferă?
sobes.tech AI
Răspuns de la AI
Expresia lambda în Java este o funcție anonimă care nu aparține niciunei clase și poate fi transmisă ca obiect.
Sintaxă: (parametri) -> { corp }
Posibilități:
- Interfață funcțională: Expresia lambda poate fi atribuită unei variabile de tip interfață funcțională (interfață cu o singură metodă abstractă).
// Interfață funcțională @FunctionalInterface interface MyInterface { void myMethod(); } // Utilizarea expresiei lambda MyInterface lambda = () -> System.out.println("Salut din lambda!"); lambda.myMethod(); - Simplificarea codului: Înlocuiesc clasele interne anonime pentru implementarea interfețelor funcționale.
// Înainte de Java 8 (clasă anonimă) Thread thread1 = new Thread(new Runnable() { @Override public void run() { System.out.println("Modul vechi"); } }); // Începând cu Java 8 (lambda) Thread thread2 = new Thread(() -> System.out.println("Modul lambda")); - Utilizare în API-ul Stream: Se integrează cu API-ul Stream pentru efectuarea de operații asupra colecțiilor.
List<String> names = Arrays.asList("Alice", "Bob", "Charlie"); names.stream() .filter(name -> name.startsWith("A")) // Expresie lambda .forEach(System.out::println); // Referință metodă (expresie lambda) - Executarea întârziată: Codul din interiorul expresiei lambda se execută doar la apelarea metodei funcționale.
- Domeniul variabilelor: Expresiile lambda pot captura variabile din mediul exterior (variabilele locale trebuie să fie finale sau efectiv finale).
| Avantaj | Descriere |
|---|---|
| Concizie în cod | Reduce "verbositatea" comparativ cu clasele anonime. |
| Îmbunătățirea lizibilității | Codul devine mai concis și mai ușor de înțeles. |
| Procesare paralelă | Este suportată de API-ul Stream pentru operații paralele. |