Sobes.tech
Junior

Czym są wyrażenia lambda w Java?

sobes.tech AI

Odpowiedź od AI

Wyrażenie lambda w Javie to anonimowa (bez nazwy) funkcja, która implementuje interfejs funkcyjny.

Główne cechy:

  • Nie mają nazwy.
  • Mogą mieć parametry.
  • Ciało może składać się z pojedynczego wyrażenia lub bloku instrukcji.
  • Typ wartości zwracanej nie jest określony (jest automatycznie wywnioskowany).
  • Są potrzebne do programowania funkcyjnego i pracy z strumieniami (Streams API).

Składnia:

// Bez parametrów
() -> { // ciało }

// Z jednym parametrem (typ można pominąć)
param -> wyrażenie

// Z wieloma parametrami (typ można pominąć, potrzebne nawiasy)
(param1, param2) -> { // ciało }

Przykład użycia:

// Funkcyjny interfejs (wbudowany)
import java.util.function.Consumer;

// Implementacja za pomocą lambda
Consumer<String> drukarka = s -> System.out.println(s);
drukarka.accept("Witaj świecie!");

// Użycie w metodzie przyjmującej interfejs funkcyjny
import java.util.Arrays;
import java.util.List;

List<Integer> liczby = Arrays.asList(1, 2, 3, 4, 5);
liczby.forEach(n -> System.out.println(n)); // forEach przyjmuje Consumer

Zalety:

  • Bardziej zwięzły kod.
  • Lepsza czytelność (w prostych przypadkach).
  • Możliwość korzystania z programowania funkcyjnego.
  • Uproszczenie pracy z kolekcjami i wielowątkowością.

Ograniczenia:

  • Zagnieżdżone lub długie lambdy mogą być trudne do zrozumienia.
  • Nie mają stanu (nie mogą mieć pól instancji).