Odak modu

Java 102

Lambda Expressions

Lambda Expression


Lambda ifadesi ilk kez Java 8'de tanıtıldı. Ana amacı dilin ifade gücünü artırmaktı. Ancak, lambdalara başlamadan önce, Fonksiyonel Interface konusunu anlamamız gerekir.


Functional Interface


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.


Örnek


package java.lang;

@FunctionalInterface
public interface Runnable {
    public abstract void run();
}

public class PatikaDev {
    public static void main(String[] args) {
        // Java 8'den öncesi
        Runnable runnable1 = new Runnable() {
            @Override
            public void run() {

                System.out.println("Before 1.8");
            }
        };
        runnable1.run();

        // Java 8'den sonrası
        Runnable runnable2 = () -> System.out.println("1.8");
        runnable2.run();
    }
}


Functional Interface Örneği



@FunctionalInterface
public interface Matematik {
    public abstract int transaction(int a, int b);
}



Eski Kullanım



public class PatikaDev {
    public static void main(String[] args) {
        Matematik toplama = new Matematik() {
            @Override
            public int transaction(int a, int b) {
                return a + b;
            }
        };

        Matematik cikarma = new Matematik() {
            @Override
            public int transaction(int a, int b) {
                return a - b;
            }
        };

        Matematik bolme = new Matematik() {
            @Override
            public int transaction(int a, int b) {
                if (b == 0) {
                    b = 1;
                }
                return a / b;
            }
        };

        Matematik carpma = new Matematik() {
            @Override
            public int transaction(int a, int b) {
                return a * b;
            }
        };


        System.out.println(toplama.transaction(10 , 2));
        System.out.println(cikarma.transaction(10 , 2));
        System.out.println(bolme.transaction(10 , 2));
        System.out.println(carpma.transaction(10 , 2));
    }
}


Lambda Kullanımı



public class PatikaDev {
    public static void main(String[] args) {

        Matematik toplam = (a, b) -> a + b;
        Matematik cikarma = (a, b) -> a - b;
        Matematik carpma = (a, b) -> a * b;
        Matematik bolme = (a, b) -> {
            if (b == 0) {
                b = 1;
            }
            return a / b;
        };

        System.out.println(toplam.transaction(10, 2));
        System.out.println(cikarma.transaction(10, 2));
        System.out.println(carpma.transaction(10, 2));
        System.out.println(bolme.transaction(10, 2));
    }
}


Kaynak


Background Pattern
Birlikte öğrenelim

Sektörde en çok aranan yazılım becerilerini kazan

Yapay zeka desteği, birebir mentörlük saatleri, canlı dersler ve senin için özel hazırlanmış içeriklerle eksiklerini tamamla, düzenli geri bildirimler al ve öğrenme sürecini en verimli hale getir.

Yunus Emre Kabakcı

Patika+ mezunu

Patika+ Fullstack Web Development Bootcamp mezunumuz Yunus Emre,

3 ay içinde Katar’dan aldığı teklif ile, global bir şirket olan Pavo Group’da işe başladı!


“İçerik zenginliği, mentor desteği, ileriye dönük bir network sağlaması ve dünyada en çok tercih edilen frameworkler üzerinden bir eğitim veriyor olması Patika+’ı tercih etmemin temel sebepleri oldu!“

Yorumlar

Yorum yapabilmek için derse kayıt olmalısın!

Bu dersi nasıl buldun?

This website uses cookies to ensure you get the best experience.

Disclaimer: The information /programs / events provided on https://patika.dev and https://risein.com are strictly for upskilling and networking purposes related to the technical infrastructure of blockchain platforms. We do not provide financial or investment advice and do not make any representations regarding the value, profitability, or future price of any blockchain or cryptocurrency. Users are encouraged to conduct their own research and consult with licensed financial professionals before engaging in any investment activities. https://patika.dev and https://risein.com disclaim any responsibility for financial decisions made by users based on information provided here.