Menguasai Ekspresi Lambda Java 8: Panduan Pemrograman Fungsional
Ekspresi lambda diperkenalkan dalam Java 8 dan dianggap sebagai fitur terbesar Java 8. Ekspresi lambda memfasilitasi pemrograman fungsional dan menyederhanakan pengembangan secara signifikan.
Sintaks
Sebuah ekspresi lambda ditandai oleh sintaks berikut.
parameter -> expression body
Berikut adalah karakteristik penting dari sebuah ekspresi lambda.
Optional type declaration − Tidak perlu mendeklarasikan tipe parameter. Compiler dapat menyimpulkan tipe tersebut dari nilai parameter.
Optional parenthesis around parameter − Tidak perlu mendeklarasikan parameter tunggal dalam tanda kurung. Untuk beberapa parameter, tanda kurung diperlukan.
Optional curly braces − Tidak perlu menggunakan kurung kurawal dalam tubuh ekspresi jika tubuh hanya berisi satu pernyataan.
Optional return keyword − Compiler secara otomatis mengembalikan nilai jika tubuh hanya memiliki satu ekspresi untuk mengembalikan nilai. Kurung kurawal diperlukan untuk menunjukkan bahwa ekspresi mengembalikan nilai.
Contoh Ekspresi Lambda
Buat program Java berikut menggunakan editor pilihan Anda, katakanlah di C:\> JAVA.
Java8Tester.java
Live Demo
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); } } Verifikasi Hasil
Kompilasi kelas menggunakan compiler javac seperti berikut −
C:\JAVA>javac Java8Tester.java
Sekarang jalankan Java8Tester seperti berikut −
C:\JAVA>java Java8Tester
Hasilnya akan seperti berikut −
10 + 5 = 15 10 - 5 = 5 10 x 5 = 50 10 / 5 = 2 Hello Mahesh Hello Suresh
Berikut adalah beberapa poin penting yang harus dipertimbangkan dalam contoh di atas.
Ekspresi lambda digunakan terutama untuk mendefinisikan implementasi inline dari antarmuka fungsional, yaitu antarmuka dengan hanya satu metode. Dalam contoh di atas, kami telah menggunakan berbagai jenis ekspresi lambda untuk mendefinisikan metode operation dari antarmuka MathOperation. Kemudian kami telah mendefinisikan implementasi sayMessage dari GreetingService.
Ekspresi lambda menghilangkan kebutuhan kelas anonim dan memberikan kemampuan pemrograman fungsional yang sangat sederhana namun kuat kepada Java.
Scope
Dengan menggunakan ekspresi lambda, Anda dapat merujuk ke variabel final atau variabel secara efektif final (yang hanya ditetapkan sekali). Ekspresi lambda menghasilkan kesalahan kompilasi jika variabel ditetapkan nilai yang kedua kalinya.
Contoh Scope
Buat program Java berikut menggunakan editor pilihan Anda, katakanlah di C:\> JAVA.
Java8Tester.java
Live Demo
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); } } Verifikasi Hasil
Kompilasi kelas menggunakan compiler javac seperti berikut −
C:\JAVA>javac Java8Tester.java
Sekarang jalankan Java8Tester seperti berikut −
C:\JAVA>java Java8Tester
Hasilnya akan seperti berikut −
Hello! Mahesh