Oleh : Reza Ervani
بسم الله الرحمن الرحيم
Class anonymous adalah class yang tidak memilki nama. Mereka umumnya dideklarasikan sebagai subclass dari suatu class yang ada, atau sebagai implementasi dari beberapa interface
Class-class anonymous didefinisikan ketika mereka diinstansiasi. Berikut contoh pendeklarasian suatu subclass anonymous dari superclass yang disebut SuperClass
:
public class SuperClass { public void doIt() { System.out.println("SuperClass doIt()"); } } SuperClass instance = new SuperClass() { public void doIt() { System.out.println("Anonymous class doIt()"); } }; instance.doIt();
Menjalankan kode tersebut diatas akan menghasilkan Anonymous class doIt()
dikeluarkan ke System.out
. Subclass dari class anonymous (extends) SuperClass
dan menimpa metode doIt()
Class-class anonymous juga mengimplementasikan suatu interface, bukan melebarkan suatu class. Berikut contohnya :
public interface MyInterface { public void doIt(); } MyInterface instance = new MyInterface() { public void doIt() { System.out.println("Anonymous class doIt()"); } }; instance.doIt();
Sebagaimana yang kita lihat, ini sama dengan suatu class anonymous melebarkan class yang lain.
Suatu class anonymous dapat mengakses anggota class penaungnya. Dia juga dapat mengakses variabel-variabel lokal yang dideklarasikan final atau effectively final
Kita dapat mendeklarasikan fields dan metode didalam suatu class anonymous, tetapi kita tidka mendeklarasikan konstruktor. Tapi kita dapat mendeklarasikan suatu inisialiser statik pula
Berikut contohnya :
final Strint textToPrint = "Text..."; MyInterface instance = new MyInterface() { private String text; //static initializer { this.text = textToPrint; } public void doIt() { System.out.println(this.text); } }; instance.doIt();
Aturan-aturan yang sama pada shadowing juga berlaku pada class-class anonymous sebagaimana untuk inner class.
Leave a Reply