Sobes.tech
Junior

Ką leidžia daryti lambda išraiškos Java?

sobes.tech AI

Atsakymas iš AI

Lambdų išraiškos (Lambda Expressions) Java kalboje, kurios atsirado Java 8, leidžia:

  • Įgyvendinti interfeisus su vienu abstrakčiu metodu (funkciniai interfeisai): tai pagrindinė paskirtis. Lambdų išraiškos suteikia trumpą sintaksę funkcinių interfeisų pavyzdžiams kurti:
// Iki Java 8
Runnable runnable = new Runnable() {
    @Override
    public void run() {
        System.out.println("Hello pre-Java 8!");
    }
};

// Su Java 8
Runnable lambdaRunnable = () -> System.out.println("Hello Java 8!");
  • Perduoti elgesį (funkcijas) kaip metodų argumentus: tai plečia funkcinių programavimo galimybes Java kalboje. Metodai gali priimti lambdas kaip parametrus:
// Stream API naudojimo pavyzdys su lambda
List<String> names = Arrays.asList("Alice", "Bob", "Charlie");
names.stream()
     .filter(name -> name.startsWith("A")) // lambda kaip filter argumentas
     .forEach(System.out::println);       // lambda (metodo nuoroda) kaip forEach argumentas
  • Naudoti Stream API: Lambdas yra pagrindas naujai Stream API, leidžiančiai efektyviai apdoroti duomenų rinkinius:
List<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5);
int sumOfEven = numbers.stream()
                      .filter(n -> n % 2 == 0)
                      .mapToInt(Integer::intValue)
                      .sum();
  • Supaprastinti anoniminių vidinių klasių įgyvendinimą funkciniams interfeisams: Lambdas pakeičia daug žodžių reikalaujančias anonimines klases šiame kontekste:

  • Pagerinti kodo skaitomumą: paprastoms operacijoms lambdas daro kodą trumpesnį ir aiškesnį:

  • Leisti atidėliotą kodo vykdymą: Lambda apibūdina veiksmą, kuris bus vykdomas vėliau, kai jis bus iškviestas:

Lambdas taip pat turi prieigą prie išorinės apimties kintamųjų (jei jie yra efektyviai finalūs).

Apskritai, lambdas daro Java labiau išraiškingą ir tinkamą funkciniam programavimo stiliui.