Java Lambda – 1 : Basic

Ini adalah sedikit catatan mengenai penggunaan lambda expression pada Java versi 8 atau yang lebih tinggi. Ekspresi lambda meminjam dari pemrograman fungsional, dimana fungsi dapat dianggap seolah-olah sebagai data. Hal tersebut dapat dilakukan dengan membuat sebuah blok kode anonim. Java merupakan pemrograman berorientasi objek, jadi semua hal harus dibungkus pada objek, termasuk ekspresi lambda itu sendiri.

Untuk mendeklarasikan ekspresi lambda, diperlukan deklarasi interface dengan anotasi @FunctionalInterface, walaupun tanpa anotasipun sebenarnya bisa. Setiap functional interface hanya boleh memiliki sebuah method declaration yang nantinya akan menjadi sebuah ekspresi Lambda.

Sebagai contoh, akan dibuat sebuah method sayHello, dimana method tersebut dapat digunakan untuk membuat luaran Hello dengan berbagai “Hello” yang diikuti dengan nama orang. Diperlukan sebuah functional interface dengan masukan sebuah string nama sebagai berikut.

@FunctionalInterface
interface LambdaHello{
  public void sayHello(String nama);
}

Untuk membuat sebuah ekspresi lambda, functional interface di atas digunakan sebagai tipe objek-nya. sebagai berikut :

LambdaHello hello1 = (String nama)->System.out.println("Hello "+nama);
hello1.sayHello("Arfan");

Kode di atas menunjukkan ekspresi lambda yang dituliskan dengan :

(<parameter list>) -> <ekspresi lambda>

method sayHello kemudian dapat dipanggil dengan menyertakan masukan berupa nama. Bagaimana apabila ada cara mengucapkan Hello yang lain, misalnya dengan kata “Marhaban”. Maka kode berikut dapat ditambahkan :

LambdaHello hello1 = (String nama)->System.out.println("Marhaban "+nama);
hello1.sayHello("Fathma");

Kode di atas menunjukkan bahwa ekspresi lambda dapat dideklarasikan menyesuaikan dengan method abstrak pada interface, terutama untuk masukannya. Masukan ekspresi lambda dapat dideklarasikan diantara dua kurung :

(<masukan>) -> <ekspresi lambda>

Berikut kode selengkapnya :

//nama kelas : HelloLambda.java
@FunctionalInterface
interface LambdaHello{
  public void sayHello(String nama);
}

public class HelloLambda {

  public static void main(String[] args) {
    LambdaHello hello1 = (String nama)->System.out.println("Hello "+nama);
    hello1.sayHello("Arfan");
    LambdaHello hello2 = (String nama)->System.out.println("Marhaban "+nama);
    hello2.sayHello("Fatma");
  }

}

 

–end of note–

 

 

Leave a Reply

Your email address will not be published. Required fields are marked *