java
Ekspresi Lambda diperkenalkan di Java 8 dan disebut-sebut sebagai fitur terbesar Java 8. Ekspresi Lambda memfasilitasi pemrograman fungsional, dan sangat menyederhanakan pengembangan.
Ekspresi lambda ditandai dengan sintaks berikut.
parameter -> expression body
Berikut ini adalah karakteristik penting dari ekspresi lambda.
Deklarasi jenis opsional Tidak perlu mendeklarasikan tipe parameter. Kompiler dapat menyimpulkan hal yang sama dari nilai parameter.
Kurung opsional di sekitar parameter Tidak perlu mendeklarasikan satu parameter dalam kurung. Untuk beberapa parameter, tanda kurung diperlukan.
Kurung kurawal opsional Tidak perlu menggunakan kurung kurawal pada ekspresi body jika body berisi satu pernyataan.
Kata kunci pengembalian opsional Kompilator secara otomatis mengembalikan nilai jika tubuh memiliki ekspresi tunggal untuk mengembalikan nilai. Kurung kurawal diperlukan untuk menunjukkan bahwa ekspresi mengembalikan nilai.
Buat program Java berikut menggunakan editor pilihan Anda, misalnya, C:\> 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); } }
Kompilasi kelas menggunakan javac kompiler sebagai berikut
C:\JAVA>javac Java8Tester.java
Sekarang jalankan Java8Tester sebagai berikut
C:\JAVA>java Java8Tester
Ini harus menghasilkan output berikut
10 + 5 = 15 10 - 5 = 5 10 x 5 = 50 10 / 5 = 2 Hello Mahesh Hello Suresh
Berikut ini adalah poin penting yang harus diperhatikan dalam contoh di atas.
Ekspresi Lambda digunakan terutama untuk mendefinisikan implementasi inline dari antarmuka fungsional, yaitu antarmuka dengan metode tunggal saja. Dalam contoh di atas, kami telah menggunakan berbagai jenis ekspresi lambda untuk mendefinisikan metode operasi antarmuka MathOperation. Kemudian kita telah mendefinisikan implementasi sayMessage of GreetingService.
Ekspresi Lambda menghilangkan kebutuhan kelas anonim dan memberikan kemampuan pemrograman fungsional yang sangat sederhana namun kuat ke Java.
Menggunakan ekspresi lambda, Anda dapat merujuk ke variabel final apa pun atau variabel final efektif (yang ditetapkan hanya sekali). Ekspresi Lambda memunculkan kesalahan kompilasi, jika variabel diberi nilai untuk kedua kalinya.
Buat program Java berikut menggunakan editor pilihan Anda, misalnya, C:\> JAVA.
Java8Tester.java
Demo Langsungpublic 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); } }
Kompilasi kelas menggunakan javac kompiler sebagai berikut
C:\JAVA>javac Java8Tester.java
Sekarang jalankan Java8Tester sebagai berikut
C:\JAVA>java Java8Tester
Ini harus menghasilkan output berikut
Hello! Mahesh
java
Antarmuka Koleksi Java Dalam tutorial ini, kita akan belajar tentang antarmuka Java Collection dan subinterface-nya. Collection antarmuka adalah antarmuka akar kerangka koleksi Java. Tidak ada implementasi langsung dari antarmuka ini. Namun, ini diimplementasikan melalui subinterfacenya seperti L
Daftar Java Dalam tutorial ini, kita akan belajar tentang antarmuka Daftar di Java dan metodenya. Dalam Java, List interface adalah kumpulan terurut yang memungkinkan kita untuk menyimpan dan mengakses elemen secara berurutan. Ini memperluas Collection antarmuka. Kelas yang Menerapkan Daftar Seja
Antarmuka Antrian Java Dalam tutorial ini, kita akan belajar tentang antarmuka Java Queue dan metodenya. Queue antarmuka kerangka koleksi Java menyediakan fungsionalitas struktur data antrian. Ini memperluas Collection antarmuka. Kelas yang Menerapkan Antrian Sejak Queue adalah antarmuka, kami t
Java PriorityQueue Dalam tutorial ini, kita akan belajar tentang kelas PriorityQueue dari framework koleksi Java dengan bantuan contoh. PriorityQueue class menyediakan fungsionalitas struktur data heap. Ini mengimplementasikan antarmuka Antrian. Tidak seperti antrian normal, elemen antrian pri