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)
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)
void doClick(){
action.onClick();
}
}
Terakhir, buatlah class Main dengan isi seperti ini:
(Jangan Lupa Ketik Nama Lengkap Anda, Agar tidak dianggap Mencotek)
}
}
Jalankan programnya.
Maka hasilnya:
Contoh, sekarang coba ubah kode yang ada di class Main menjadi seperti ini:
(Jangan Lupa Ketik Nama Lengkap Anda, Agar tidak dianggap Mencotek)
@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);
}
});
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.
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();
}
@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
void saySomething(){
System.out.println("Something..");
}
}
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.