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:
- 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. |