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

  1. 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();  
    
  2. 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"));  
    
  3. 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)  
    
  4. Gecikmeli yürütme: Lambda ifadesi içindeki kod, yalnızca fonksiyonel yöntemi çağırıldığında çalışır.
  5. 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.