Middle
Java'da lambda ifadeleri nedir ve hangi imkanları sağlarlar?
sobes.tech yapay zeka
AI'dan gelen yanıt
Java'da lambda ifadesi, herhangi bir sınıfa ait olmayan ve nesne olarak aktarılabilen anonim bir fonksiyondur.
Sözdizimi: (parametreler) -> { gövde }
İmkanlar:
- Fonksiyonel arayüz: Lambda ifadesi, fonksiyonel arayüz türündeki bir değişkene atanabilir (tek soyut metoda sahip arayüz).
// Fonksiyonel arayüz @FunctionalInterface interface MyInterface { void myMethod(); } // Lambda ifadesinin kullanımı MyInterface lambda = () -> System.out.println("Lambda'dan Merhaba!"); lambda.myMethod(); - Kodun basitleştirilmesi: Fonksiyonel arayüzleri uygulamak için anonim iç sınıfların yerine kullanılır.
// Java 8 öncesi (anonim sınıf) Thread thread1 = new Thread(new Runnable() { @Override public void run() { System.out.println("Eski yol"); } }); // Java 8 ve sonrası (lambda) Thread thread2 = new Thread(() -> System.out.println("Lambda yolu")); - Stream API'de kullanım: Koleksiyonlar üzerinde işlemler yapmak için Stream API ile entegre edilir.
List<String> names = Arrays.asList("Alice", "Bob", "Charlie"); names.stream() .filter(name -> name.startsWith("A")) // Lambda ifadesi .forEach(System.out::println); // Metod referansı (lambda ifadesi) - Gecikmeli yürütme: Lambda ifadesi içindeki kod, yalnızca fonksiyonel yöntemi çağırıldığında çalışır.
- Kapsam: Lambda ifadeleri, dış ortamdan değişkenleri yakalayabilir (yerel değişkenler final veya effectively final olmalıdır).
| Avantaj | Açıklama |
|---|---|
| Kısalık | Anonim sınıflara kıyasla "uzunluk" azaltır. |
| Okunabilirlik artırma | Kod daha öz ve anlaşılır hale gelir. |
| Paralel işlem | Stream API tarafından paralel işlemler için desteklenir. |