Sobes.tech
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.