Java 8 - Lambda İfadeleri

Lambda ifadeleri Java 8'de tanıtıldı ve Java 8'in en büyük özelliği olarak lanse edildi. Lambda ifadesi, işlevsel programlamayı kolaylaştırır ve geliştirmeyi çok kolaylaştırır.

Sözdizimi

Bir lambda ifadesi aşağıdaki sözdizimi ile karakterize edilir.

parameter -> expression body

Aşağıda bir lambda ifadesinin önemli özellikleri verilmiştir.

  • Optional type declaration- Bir parametrenin türünü bildirmeye gerek yoktur. Derleyici, parametrenin değerinden aynı sonuca varabilir.

  • Optional parenthesis around parameter- Parantez içinde tek bir parametre belirtmeye gerek yoktur. Birden çok parametre için parantez gereklidir.

  • Optional curly braces - Gövde tek bir ifade içeriyorsa, ifade gövdesinde kaşlı ayraç kullanmaya gerek yoktur.

  • Optional return keyword- Gövdenin değeri döndürmek için tek bir ifadesi varsa, derleyici otomatik olarak değeri döndürür. İfadenin bir değer döndürdüğünü belirtmek için kaşlı ayraçlar gereklidir.

Lambda İfadeleri Örneği

C: \> JAVA'da seçtiğiniz herhangi bir düzenleyiciyi kullanarak aşağıdaki Java programını oluşturun.

Java8Tester.java

public class Java8Tester {

   public static void main(String args[]) {
      Java8Tester tester = new Java8Tester();
		
      //with type declaration
      MathOperation addition = (int a, int b) -> a + b;
		
      //with out type declaration
      MathOperation subtraction = (a, b) -> a - b;
		
      //with return statement along with curly braces
      MathOperation multiplication = (int a, int b) -> { return a * b; };
		
      //without return statement and without curly braces
      MathOperation division = (int a, int b) -> a / b;
		
      System.out.println("10 + 5 = " + tester.operate(10, 5, addition));
      System.out.println("10 - 5 = " + tester.operate(10, 5, subtraction));
      System.out.println("10 x 5 = " + tester.operate(10, 5, multiplication));
      System.out.println("10 / 5 = " + tester.operate(10, 5, division));
		
      //without parenthesis
      GreetingService greetService1 = message ->
      System.out.println("Hello " + message);
		
      //with parenthesis
      GreetingService greetService2 = (message) ->
      System.out.println("Hello " + message);
		
      greetService1.sayMessage("Mahesh");
      greetService2.sayMessage("Suresh");
   }
	
   interface MathOperation {
      int operation(int a, int b);
   }
	
   interface GreetingService {
      void sayMessage(String message);
   }
	
   private int operate(int a, int b, MathOperation mathOperation) {
      return mathOperation.operation(a, b);
   }
}

Sonucu Doğrulayın

Kullanarak sınıfı derleyin javac aşağıdaki gibi derleyici -

C:\JAVA>javac Java8Tester.java

Şimdi Java8Tester'i aşağıdaki gibi çalıştırın -

C:\JAVA>java Java8Tester

Aşağıdaki çıktıyı üretmelidir -

10 + 5 = 15
10 - 5 = 5
10 x 5 = 50
10 / 5 = 2
Hello Mahesh
Hello Suresh

Yukarıdaki örnekte dikkate alınması gereken önemli noktalar aşağıdadır.

  • Lambda ifadeleri, öncelikle bir işlevsel arabirimin, yani yalnızca tek bir yöntemle bir arabirimin satır içi uygulamasını tanımlamak için kullanılır. Yukarıdaki örnekte, MathOperation arayüzünün işlem yöntemini tanımlamak için çeşitli lambda ifadeleri kullandık. Daha sonra, TebrikService'in sayMessage uygulamasını tanımladık.

  • Lambda ifadesi, anonim sınıf ihtiyacını ortadan kaldırır ve Java'ya çok basit ama güçlü bir işlevsel programlama yeteneği verir.

Dürbün

Lambda ifadesini kullanarak, herhangi bir son değişkene veya etkin bir son değişkene (yalnızca bir kez atanan) başvurabilirsiniz. Bir değişkene ikinci kez bir değer atanırsa, Lambda ifadesi bir derleme hatası atar.

Kapsam Örneği

C: \> JAVA'da seçtiğiniz herhangi bir düzenleyiciyi kullanarak aşağıdaki Java programını oluşturun.

Java8Tester.java

public class Java8Tester {

   final static String salutation = "Hello! ";
   
   public static void main(String args[]) {
      GreetingService greetService1 = message -> 
      System.out.println(salutation + message);
      greetService1.sayMessage("Mahesh");
   }
	
   interface GreetingService {
      void sayMessage(String message);
   }
}

Sonucu Doğrulayın

Kullanarak sınıfı derleyin javac aşağıdaki gibi derleyici -

C:\JAVA>javac Java8Tester.java

Şimdi Java8Tester'i aşağıdaki gibi çalıştırın -

C:\JAVA>java Java8Tester

Aşağıdaki çıktıyı üretmelidir -

Hello! Mahesh