Program 11 |
class A { int i = 10; void lakukanSesuatu() { i--; System.out.println("i = " + i); } } public class BelajarAnonymous1 { //1 public static void main(String[] args) { //2 A a = new A() { //3 void lakukanSesuatu() { //4 i++; System.out.println("i = " + i); } //4 }; //3 a.lakukanSesuatu(); } //2 } //1 |
- Contoh anonymous inner class sebagai implementasi suatu interface : [1]
Program 12 |
interface A { public void doA(); } interface B extends A { public void doB(); } public class BelajarAnonymous2 { public static void main(String[] args) { B b = new B() { public void doA() { System.out.println("Ini method doA()"); } public void doB() { System.out.println("Ini method doB()"); } }; b.doA(); b.doB(); } } |
- Anonymous inner class adalah salah satu bentuk dari polymorphisme, oleh karena itu, method yang dapat dipanggil dari anonymous inner class adalah method yang dideklarasikan di super class atau interfacenya (meskipun di dalam anonymous inner class dapat dideklarasikan method-method yang tidak ada di super class atau interfacenya).
Program 13 |
class A { int i = 10; void lakukanSesuatu() { i--; System.out.println("i = " + i); } } public class BelajarAnonymous1 { public static void main(String[] args) { A a = new A() { void lakukanSesuatu() { i++; System.out.println("i = " + i); } //Di bawah ini adalah method yang tidak ada di class A void newMethod() { System.out.println("Hallo, nama saya Anton"); } }; a.lakukanSesuatu(); //Tidak error a.newMethod(); //ERROR !!!!!!! } } |
- Anonymous inner class dapat diletakkan sebagai argument dari suatu method. Contoh : [1]
Program 14 |
class A { void lakukanSesuatu() { System.out.println("Ini isi aslinya"); } } class B { static void demoAnonymousInnerClassSebagaiArgument(A a) { a.lakukanSesuatu(); } } public class BelajarAnonymous3 { public static void main(String[] args) { B.demoAnonymousInnerClassSebagaiArgument(new A() { void lakukanSesuatu() { System.out.println("Ini method di anonymous inner class"); } }); } } |