Anda di halaman 1dari 8

Java OOP:

Mengenal Class Anonymous di Java


Apa yang kamu pikirkan saat mendengar kata anonymous?
“Sekelompok hacker yang bersembunyi di balik topeng”

Namun, bukan ini yang akan kita bahas.


Pada tutorial ini, akan dibelajari tentang anonymous class di Java. Mulai dari
pengenalan dan alasan mengapa harus menggunakan class anonymous, hingga
contoh programnya.
Class ini mungkin jarang digunakan, atau mungkin sudah pernah digunakan tapi tak
sadar itu adalah anonymous class.

Pengertian Class Anonymous


Class Anonymous adalah class yang tidak memiliki nama. Biasanya dibuat hanya
untuk sekali pakai saja. Pada dasarnya class anonymous sama seperti class biasa. 1
Yang membedakan adalah tujuan ia dibuat.
Biasanya class anonymous dibuat untuk mengimplementasikan interface dan class
abstrak secara langsung.
Class Anonymous mulai ditambahkan pada JDK versi 8. Jadi, pada JDK versi di
bawah 8, maka class anonymous tidak akan bisa digunakan di sana.

Penggunakan Class Anonymous


Anonymous class biasanya dibutuhkan saat tidak ingin membuat implementasi dari
interface dan class abstrak dalam file Java yang berbeda.

Implementasinya langsung di dalam kode yang sedang ditulis.


Misalnya gini: (kita pakai contoh kasus)
Kita ingin memakai sebuah tombol dan tombol tersebut punya interfece bernama
Clickable yang akan meng-handle bagaimana tombol itu diklik.

// ini interface yang akan menangani klik pada tombol


interface Clickable {
void onClick();
void onHover();
}

// dan ini class Tombol


class Button {
void setClickAction(Clickable event){
event.onClick();
}
}
Biasanya kita akan melakukan implementasi seperti ini:
class SubmitPost implements Clickable {
// kode implementasi di sini
}
Lalu membuat objek tombol pada main method:
Button btn = new Button();
Clickable submitAction = new SubmitPost();
btn.setClickAction(submitAction);
Dapat kita buat lebih sederhana dengan Class Anonymous.
Button btn = new Button();
Clickable submitAction = new SubmitPost();

// menggunakan class anonymous untuk implementasi interface


btn.setClickAction(new Clickable(){
// kode implementasi di sini
});
Jadinya kita tidak perlu lagi membuat class SubmitPost atau implementasi dari
interface Clickable, karena sudah dibuat dengan class anonymous.
Biasanya kita akan menemui kasus ini saat ngoding Android dan Java FX.
Selanjutnya kita bahas lebih dalam tentang cara membuat dan menggunakan class
anonymous.

Cara Membuat Class Anonymous


Class anounymous bersifat seperti ekspresi, ia dapat dibuat seperti membuat
variabel.
Berikut ini cara membuat class anonymous:

Perhatikan, Tadi class anonymous itu tidak memiliki nama?, Tapi ini ada nama?
Class anonymous memang tidak memiliki nama, namun dalam pembuatannya ia
akan menggunakan nama dari Interface atau class abstrak yang ia implementasikan.
Kalau tidak seperti itu, bagaimana kita tahu interface atau class abstrak yang mana
yang akan dia implementasikan.
Class anonymous dapat kita buat di beberapa tempat:
 Fields (pada properti)
Contoh:
 Di dalam method (parameter dan body)
Contoh:
 Instance initializers (seperti gambar di atas)
Contoh:
 Local classes (di dalam inner class)

Class anonymous tidak boleh memiliki konstruktor.


Selanjutnya, coba contohnya di dalam program.
Contoh Program dengan Class Anonymous

Buka Netbeans, lalu buatlah proyek baru dengan nama ClassAnonymous.

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 {


// 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();

}
}
Jalankan programnya.
Maka hasilnya:

Akses Variabel di Anonymous Class


Salah satu keuntungan saat kita menggunakan anonymous class adalah dapat
mengakses variabel yang ada di dalam class tempat class anonymous itu dibuat.

Contoh, sekarang coba ubah kode yang ada di class Main menjadi seperti ini:
(Jangan Lupa Ketik Nama Lengkap Anda, Agar tidak dianggap Mencotek)

public class Main {


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

// membuat variabel di dalam class


static String title = "Tutorial Anonymous Class";
public static void main(String[] args) {
// membuat variabel di dalam method main
String name = "Petani Kode";
Button btn = new Button();

// membuat class anonymous untuk implemen interface


btn.setClickAction(new Clickable() {
// membuat variabel di dalam class anonymous
String message = "belajar Anonymous Class di Java";

@Override
public void onClick() {
System.out.println("Tombol sudah diklik!");
System.out.println("Yay!");
// mengakses variabel
System.out.println("Hello " + name);
System.out.println(title);
System.out.println(message);
}

});

// mencoba klik tombol


btn.doClick();
}
}
Jalankan Lagi Programnya:
Hasilnya:

Semua variabel yang kita buat bisa diakses dari dalam anonymous class. Hebat kan!
Tapi class anonymous juga punya batasan, yakni kita tidak bisa mendeklarasikan
member interface dan variabel static di dalamnya.

Menggunakan Anonymous Objek


Jika ada class anonymous, maka juga akan ada objek anonymous.
Objek anonymous adalah objek yang tak memiliki nama dan dia juga biasanya
digunakan hanya untuk sekali pakai saja.
Sebenarnya pada contoh di atas, kita sudah menggunakan objek anonymous sebagai
parameter pada method setActionClick().

// jika tidak menggunakan anonymous objek


// maka kita harus bikin instance baru dari anonymous class
Clickable clickAction = new Clickable() {
// kode implementasi di sini
}

// baru setelah itu dipakai menjadi partameter


btn.setClickAction(clickAction);

// Tapi jika menggunakan anonymous objek,


// kita tak perlu bikin objek baru.
// langsung saja ditulis seperti ini

btn.setClickAction(new Clickable(){
// kode implementasi di sini
});

Kita juga dapat menggunakan class anonymous secara langsung tanpa harus
membuat objek baru.
Contohnya:
Buat sebuah interface baru pada pacakage <default package> dengan
nama Talkable dan isi kodenya seperti ini:
(Jangan Lupa Ketik Nama Lengkap Anda, Agar tidak dianggap Mencotek)

interface Talkable{
// Nama:……………………………………… (Kitik Nama Lengkap Anda)

void sayHello();
}

// implementasi dan langsung digunakan


new Talkable(){

@override
void sayHello(){
System.out.println("Hello World!");
}

}.sayHello();
// ^ karena ini anonymous objek,
// jadi kita bisa langsung panggil methodnya
Jadi dengan kata kunci new, kita akan bisa membuat anonymous objek.
Anonymous objek tidak hanya untuk class anonymous saja, bisa juga dipakai untuk
class biasa.
Contoh:
Buatlah class biasa dengan nama: Hello dengan isi seperti ini:
(Jangan Lupa Ketik Nama Lengkap Anda, Agar tidak dianggap Mencotek

// membuat class biasa


class Hello {
// Nama:……………………………………… (Kitik Nama Lengkap Anda)

void saySomething(){
System.out.println("Something..");
}
}

// menggunakan class Hello untuk membuat anonymous objek


new Hello().saySomething();

Jalankan Programnya.
Perhatikan Hasilnya.

Catatan:
Class anonymous sangat membantu saat kita butuh implementasi langsung dari
interface dan class abstrak. Ini akan menghemat waktu kita. Karena tidak perlu buat
class baru lagi secara terpisah.
Selain itu, kode program kita juga akan terlihat lebih bersih dan mudah terbaca.
Java punya satu lagi hal yang bersifat ‘anonymous’, yakni anonymous function atau
dikenal juga dengan lambda expression.

Anda mungkin juga menyukai