Middle
Czym są wyrażenia lambda w Java?
sobes.tech AI
Odpowiedź od AI
Wyrażenie lambda w Java to funkcja anonimowa. Pozwala traktować funkcjonalność jako argument metody lub jako kod jako dane.
Główne cechy:
- Anonimowość: Nie ma nazwy.
- Interfejs funkcyjny: Wyrażenie lambda jest zawsze powiązane z interfejsem funkcyjnym (interfejsem z jedną metodą abstrakcyjną).
- Składnia:
(parametry) -> { ciało }
Przykład użycia z interfejsem funkcyjnym Consumer:
import java.util.function.Consumer;
// Interfejs funkcyjny Consumer<T> ma jedną metodę abstrakcyjną accept(T t)
Consumer<String> powitanie = (name) -> {
System.out.println("Cześć, " + name);
};
powitanie.accept("Świecie"); // Wypisze: Cześć, Świecie
Przykład użycia z interfejsem Runnable:
// Interfejs Runnable ma jedną metodę abstrakcyjną run()
Runnable zadanie = () -> {
System.out.println("Zadanie jest wykonywane w osobnym wątku");
};
new Thread(zadanie).start(); // Uruchamia zadanie w nowym wątku
Warianty składni:
- Bez parametrów:
() -> { System.out.println("Cześć"); } - Jeden parametr bez nawiasów:
name -> System.out.println("Cześć, " + name) - Kilka parametrów z nawiasami i typami:
(int a, int b) -> { return a + b; } - Kilka parametrów bez typów (wnioskowanie typu):
(a, b) -> a + b - Jednolinijkowe ciało bez
return:(a, b) -> a + b - Wielolinijkowe ciało z nawiasami klamrowymi i
return(jeśli jest potrzebne):(a, b) -> { int suma = a + b; return suma; }
Wyrażenia lambda sprawiają, że kod jest bardziej zwarty, czytelny i umożliwiają korzystanie z programowania funkcyjnego w Java.