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).