Latest web development tutorials

ekspresi java 8 Lambda

Java 8 fitur baru Java 8 fitur baru


ekspresi lambda juga bisa disebut penutupan, yang adalah untuk mempromosikan fitur baru yang paling penting dari Java 8 rilis.

Lambda diizinkan untuk berfungsi sebagai parameter metode (fungsi lulus sebagai parameter ke metode).

ekspresi Lambda dapat menggunakan kode menjadi lebih sederhana dan kompak.

tatabahasa

Lambda sintaks ekspresi adalah sebagai berikut:

(parameters) -> expression
或
(parameters) ->{ statements; }

Berikut ini adalah karakteristik penting dari ekspresi lambda:

  • Opsional deklarasi tipe: tidak perlu untuk menyatakan jenis parameter, compiler dapat disatukan nilai parameter identifikasi.
  • Parameter opsional dalam kurung: parameter yang ditetapkan tanpa tanda kurung, tetapi sejumlah parameter perlu kurung didefinisikan.
  • kawat gigi opsional: jika tubuh berisi pernyataan bahwa Anda tidak perlu kawat gigi.
  • kata kunci pulang Opsional: Jika subjek hanya satu ekspresi yang mengembalikan nilai, compiler secara otomatis akan mengembalikan nilai, kawat gigi perlu menentukan ekspresi yang jelas yang mengembalikan nilai.

Ekspresi Lambda Contoh

Dalam file Java8Tester.java masukkan kode berikut:

public class Java8Tester {
   public static void main(String args[]){
      Java8Tester tester = new Java8Tester();
		
      // 类型声明
      MathOperation addition = (int a, int b) -> a + b;
		
      // 不用类型声明
      MathOperation subtraction = (a, b) -> a - b;
		
      // 大括号中的返回语句
      MathOperation multiplication = (int a, int b) -> { return a * b; };
		
      // 没有大括号及返回语句
      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));
		
      // 不用括号
      GreetingService greetService1 = message ->
      System.out.println("Hello " + message);
		
      // 用括号
      GreetingService greetService2 = (message) ->
      System.out.println("Hello " + message);
		
      greetService1.sayMessage("w3big");
      greetService2.sayMessage("Google");
   }
	
   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);
   }
}

Pelaksanaan script di atas, output:

$ javac Java8Tester.java 
$ java Java8Tester
10 + 5 = 15
10 - 5 = 5
10 x 5 = 50
10 / 5 = 2
Hello w3big
Hello Google

Gunakan ekspresi Lambda untuk perhatikan hal berikut:

  • ekspresi Lambda terutama digunakan dalam antarmuka metode garis definisi untuk melakukan, misalnya, cara sederhana untuk antarmuka. Pada contoh di atas, kita menggunakan berbagai jenis ekspresi Lambda untuk menentukan metode MathOperation antarmuka. Kemudian kita mendefinisikan eksekusi sayMessage.
  • Ekspresi Lambda metode anonim menghilangkan penggunaan fungsi Java rumit dan diberikan kemampuan pemrograman sederhana tapi kuat.

Cakupan variabel

ekspresi lambda hanya bisa merujuk ke variabel lokal atau final, yang berarti bahwa Anda tidak dapat mengubah definisi ekstrateritorial variabel lambda dalam, jika kesalahan kompilasi.

Dalam file Java8Tester.java masukkan kode berikut:

public class Java8Tester {

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

Pelaksanaan script di atas, output:

$ javac Java8Tester.java 
$ java Java8Tester
Hello! w3big

Java 8 fitur baru Java 8 fitur baru