Sobes.tech
Middle

Kas yra lambda išraiškos Java ir kokias galimybes jos suteikia?

sobes.tech AI

Atsakymas iš AI

Java kalboje lambda išraiška yra anonimė funkcija, kuri nepriklauso jokiam klasiui ir gali būti perduota kaip objektas.

Sintaksė: (parametrai) -> { kūnas }

Galimybės:

  1. Funkcinis interfeisas: Lambda išraiška gali būti priskirta funkciniam interfeisui (interfeisui su vienu abstrakčiu metodu).
    // Funkcinis interfeisas  
    @FunctionalInterface  
    interface MyInterface {  
        void myMethod();  
    }  
    
    // Naudojant lambda išraišką  
    MyInterface lambda = () -> System.out.println("Hello from lambda!");  
    lambda.myMethod();  
    
  2. Kodo supaprastinimas: Pakeičia anoniminius vidinius klases, skirtas funkciniams interfeisams įgyvendinti.
    // Iki Java 8 (anoniminė klasė)  
    Thread thread1 = new Thread(new Runnable() {  
        @Override  
        public void run() {  
            System.out.println("Old way");  
        }  
    });  
    
    // Nuo Java 8 (lambda)  
    Thread thread2 = new Thread(() -> System.out.println("Lambda way"));  
    
  3. Naudojimas Stream API: Integruojasi su Stream API ir atlieka operacijas kolekcijoms.
    List<String> names = Arrays.asList("Alice", "Bob", "Charlie");  
    names.stream()  
         .filter(name -> name.startsWith("A")) // Lambda išraiška  
         .forEach(System.out::println);        // Metodų nuoroda  
    
  4. Atidėtas vykdymas: Kodo vykdymas lambda išraiškoje įvyksta tik iškvietus funkcionalų metodą.
  5. Matomumo sritys: Lambda išraiškos gali pasiekti išorinės srities kintamuosius (vietiniai kintamieji turi būti final arba efektyviai final).
Privalumas Aprašymas
Kodo trumpumas Sumažina "ilgumą" lyginant su anonimaisiais klases.
Skaitymo patogumas Kodas tampa glaustesnis ir aiškesnis.
Lygiagretus apdorojimas Palaikomas Stream API lygiagretoms operacijoms.