Java’da Functional Interface ve Lambda Expression

Metin Alnıaçık
1 min readOct 7, 2018

--

Functional interface, Java 8 ile gelmiş özelliklerden biridir.

Function interface, içerisinde sadece bir tane abstract metodu olan interface’dir. Eğer ilgili interface’in türetildiği interface’de abstract metot varsa bu durumda da functional interface olur.

Functional interface’ler, lambda expression’ların kullanılabilmesi için tanımlanırlar.

Functional interface’ler tanımlanırken, @FunctionalInterface anotasyonu kullanması zorunlu değildir. Bu anotasyon sadece validasyon yapma amacıyla kullanılır. Eğer anotasyon eklenirse ve birden fazla abstract metot eklenmeye çalışılırsa, bu durumda compile error verecektir.

Konuyu anlamak açısında Java’nın içinde mevcut olan functional interface’lerden birini inceleyelim;

Yukarıda Runnable interface’i bir functional interface’dir. Bu tanım sayesinde Runnable, lambda ile kullanılabilir.

8 numaralı satırda Java 1.8 den önceki teknikle bir tanımlama yapılmıştır. Bu tanımlama biçimine anonymous denir. Ve 16. satırda run metodu çalıştırılır.

19 numaralı satırda ise Java 1.8 ile gelen tanımlama biçimi mevcuttur. Bir alt satırda da metodu çalıştırılır.

Şimdi biz kendimiz bir functional interface oluşturalım ve daha sonra lambda ile kullanalım;

Öncelikle 3. satırda functional interface’i tanımlıyoruz. 13, 16 ve 19. satırlarda farklı işlemler için lambda tanımı yapıyoruz. 14, 17 ve 20. satırlarda ise bu metotları kullanıyoruz.

Eğer lambda tanımlama satırı birden fazla ise aşağıdaki gibi tanımlama yapılır.

Matematics mutliLine = (a, b) -> {
System.out.println(“First line…”);
System.out.println(“Result is: “);
System.out.println(a + b);
};

Eğer birden fazla satır olacaksa süslü parantezler arasına alınır.

Not: Süslü parantezler arasında istediğimiz işlemleri yapabiliriz.

Örneğin tamamına github adresimden ulaşabilirsiniz.

İyi günler,
Bol kodlamalar :)

--

--