Sobes.tech
Middle

Java'da lambda ifodalar nima va ular qanday imkoniyatlarni taqdim etadi?

sobes.tech AI

AIdan javob

Java'da lambda ifadesi, heç bir sinfə aid olmayan və obyekt kimi ötürülə bilən anonim funksiyadır.

Sintaksiya: (parametrlər) -> { bədən }

İmkanlar:

  1. Funksional interfeys: Lambda ifadəsi, tək abstrakt metoda malik funksional interfeysə (interfeys) təyin oluna bilər.
    // Funksional interfeys  
    @FunctionalInterface  
    interface MyInterface {  
        void myMethod();  
    }  
    
    // Lambda ifadəsinin istifadəsi  
    MyInterface lambda = () -> System.out.println("Salam lambda!");  
    lambda.myMethod();  
    
  2. Kodun sadələşdirilməsi: Funksional interfeysləri həyata keçirmək üçün anonim daxili sinifləri əvəz edir.
    // Java 8-dən əvvəl (anonim sinif)  
    Thread thread1 = new Thread(new Runnable() {  
        @Override  
        public void run() {  
            System.out.println("Köhnə yol");  
        }  
    });  
    
    // Java 8 və ya sonrası (lambda)  
    Thread thread2 = new Thread(() -> System.out.println("Lambda yolu"));  
    
  3. Stream API-də istifadə: Koleksiyalarda əməliyyatlar həyata keçirmək üçün Stream API ilə inteqrasiya olunur.
    List<String> names = Arrays.asList("Alice", "Bob", "Charlie");  
    names.stream()  
         .filter(name -> name.startsWith("A")) // Lambda ifadəsi  
         .forEach(System.out::println);        // Metod referansı (lambda ifadəsi)  
    
  4. Gecikmiş icra: Lambda ifadəsi içindəki kod yalnız funksional metod çağırıldıqda icra olunur.
  5. Əhatə dairəsi: Lambda ifadələri xarici mühitdən dəyişənləri ələ keçirə bilər (yerli dəyişənlər final və ya effektiv final olmalıdır).
Üstünlük Təsviri
Qısa kod Anonim siniflərlə müqayisədə "sözsüzlüyü" azaldır.
Oxunaqlığın yaxşılaşdırılması Kod daha qısa və anlaşılan olur.
Paralel emal Stream API tərəfindən paralel əməliyyatlar üçün dəstəklənir.