Anda di halaman 1dari 7

Java OOP: Mengenal Lambda

Expression untuk Membuat Fungsi


Anonymous di Java
Mendengar kata “Anonymous”, mungkin yang akan terpikirkan dibenak kita
adalah orang-orang ini:

Namun, bukan ini yang akan kita bahas.

Istilah anonymous memang untuk menggambarkan sesuatu yang tak memiliki


nama. Nah di Java, juga ada fungsi anonymous dan class anonymous.

Pembahasan topik ini melitputi:


 Fungsi anonymous
 Cara membuatnya
 Pengunakan fungsi anonymous
Fungsi Anonymous
Fungsi anonymous adalah fungsi yang tidak memiliki nama. Fungsi anonymous di
Java dikenal juga dengna lambda expression.
Fungsi anonymous biasanya dibuat hanya untuk sekali pakai.
Artinya, saat kita membuat fungsi anonymous, kita akan mengeksekusinya saat itu
juga. Tidak bisa dipanggil lagi seperti fungsi biasa.
Fungsi ini mulai ditambahkan pada JDK 8.
Jika kamu menggunakan JDK di bawah 8, maka kamu harus upgrade dulu agar bisa
menggunakan fungsi anonymous.
Oke, kalau begitu.. bagaimana cara membaut fungsi anonymous?

Cara Membuat Fungsi Anonymous di Java


Berikut ini adalah bentuk umum lambda expression atau fungsi anonymous di Java:

Gampang kan?
Ini simbol-simbol yang perlu kamu ingat:
() -> {}
Keterangan:
 () tempat kita menaruh parameter.
 -> (operator lambda) simbol yang menandakan fungsi ini adalah
lambda/anonymous.
 {} body fungsinya.

Contoh:
(int x, int y) -> { return x + y }
Sebenarnya simbol yang perlu diingat adalah simbol lambda (->), karena simbol ini
yang membedakan fungsi anonymous dengan fungsi biasa.
Untuk tanda kurung yang ini () dengan yang ini {}, di fungsi biasa juga ada.

Mari kita lihat contohnya:


// ini fungsi biasa
int jumlahkan(int a, int b){
return a + b;
}

// ini fungsi anonymous


(int a, int b) -> { return a + b }
Bahkan tanpa kurung kurawal juga bisa:
(int a, int b) -> return a + b;
Karena cuma ada satu baris ekspresi, maka tanda kurung {} boleh tidak ada.
Oh iya, fungsi anonymous dapat kita buat di berbagai tempat seperti:
 Pada Deklarasi variabel;Contoh:
 Pada pengisian variabel dan array;Contoh:
 Pada saat mengembalikan nilai dengan return;Contoh:
 Pada body lambda itu sendiri;Contoh:
 Pada ekspresi kondisional (?:)Contoh:

Pemakaian Fungsi Anonymous


Lambda expression atau fungsi anonymous sebenarnya hadir untuk
menyempurnakan class anonymous. Class anonymous biasanya digunakan untuk
mengimplementasikan interface dan class abstrak. Tapi masalahnya, pada saat
interface hanya memiliki satu method saja untuk diimplementasikan. Kita harus
membuat class (anonymous) baru, padahal yang dibutukan hanya method-nya saja.
Pada saat ini, lebih tepat untuk menggunakan fungsi anonymous atau lambda
expression. Bahkan Netbeans juga akan menyarankan menggunakan lambda
expression apabila menemukan kasus seperti ini:
Contoh Program Fungsi Anonymous

Buatlah proyek baru di Netbeans dengan nama ContohLambda.

Setelah itu, buat sebuah interface baru pada pacakage <default package> dengan


nama Clickable dan isi kodenya seperti ini:
(Jangan Lupa Ketik Nama Lengkap Anda, Agar tidak dianggap Mencotek)

interface Clickable {
// Nama:……………………………………… (Kitik Nama Lengkap Anda)
void onClick();
}
Setelah itu, buatlah class Button dengan isi seperti ini:
(Jangan Lupa Ketik Nama Lengkap Anda, Agar tidak dianggap Mencotek)

public class Button {


// Nama:……………………………………… (Kitik Nama Lengkap Anda)

private Clickable action;


void setClickAction(Clickable action){
this.action = action;
}
void doClick(){
action.onClick();
}
}
Terakhir, buatlah class Main dengan isi seperti ini:
(Jangan Lupa Ketik Nama Lengkap Anda, Agar tidak dianggap Mencotek)

public class Main {


// Menggunakan Class anonymous
// Nama:……………………………………… (Kitik Nama Lengkap Anda)

public static void main(String[] args) {


Button btn = new Button();
// membuat class anonymous untuk implementasi interface
btn.setClickAction(new Clickable() {
@Override
public void onClick() {
System.out.println("Tombol sudah diklik!");
System.out.println("Yay!");
}
});
// mencoba klik tombol
btn.doClick();
}
}
Berikut Jalankan Programnya, ini hasil output-nya tersebut:

Perhatikan baris kode yang ditandai di atas. Di sana kita menggunakan class
anonymous untuk mengimplementasikan interface Clickable.
Bila lebih sederhanakan, kita dapat pakai lambda expression.
Sekarang coba ubah kodenya menjadi seperti ini:
(Jangan Lupa Ketik Nama Lengkap Anda, Agar tidak dianggap Mencotek)

public class Main {


// Menggunakan lambda expression
// Nama:……………………………………… (Kitik Nama Lengkap Anda)
public static void main(String[] args) {
Button btn = new Button();

// membuat class anonymous untuk implementasi interface


btn.setClickAction(() -> {
System.out.println("Tombol sudah diklik!");
System.out.println("Yay!");
});

// mencoba klik tombol


btn.doClick();
}
}

Berikut Jalankan Programnya, ini hasil output-nya tersebut:

Jadi yang lebih sederhana adalah yang menggunakan lambda expression.

Akses Variabel untuk Fungsi Anonymous


Pada dasarnya, fungsi anonymous adalah bentuk sederhana dari class anonymous,
jadi dia akan memiliki akses variabel yang sama seperti class anonymous.
Kita akan buktikan dengan membuat variabel di luar fungsi anonymous, lalu akses
variabel tersebut dari dalam fungsi anonymous.
public class Main {
// Menggunakan variabel di luar fungsi anonymous
// Nama:……………………………………… (Kitik Nama Lengkap Anda)

public static void main(String[] args) {

Button btn = new Button();


String name = "Petani Kode";

// membuat class anonymous untuk implementasi interface


btn.setClickAction(() -> {
System.out.println("Tombol sudah diklik!");
System.out.println("Yay!");
System.out.println("Hello " + name);
});

// mencoba klik tombol


btn.doClick();
}
}
Fungsi anonymous akan bisa mengakses variabel yang berada di dalam class
(variabel global), dan lokal yang ada di method tempat anonymous class digunakan.

Berikut Jalankan Programnya, Perhatikan hasil output-nya tersebut.

Ikhtisar:
Fungsi anonymous hanya bisa digunakan saat ingin mengimplementasikan interface
yang memiliki satu method. Jika interface itu memiliki lebih dari satu method, maka
sebaiknya pakai class anonymous.

Anda mungkin juga menyukai