Middle
Java-da lambda ifadələri nədir və hansı imkanlar təqdim edir?
sobes.tech Süni İntellekt
AI-dan cavab
Java'da lambda ifadəsi, heç bir sinfə aid olmayan və obyekt kimi ötürülə bilən anonim funksiyadır.
Sintaksiya: (parametrlər) -> { bədən }
İmkanlar:
- 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(); - 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")); - 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) - Gecikmiş icra: Lambda ifadəsi içindəki kod yalnız funksional metod çağırıldıqda icra olunur.
- Ə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. |