Method-Local Inner Class
· Method-local inner class adalah inner class yang dideklarasikan di dalam method [2].
· Mendeklarasikan method-local inner class tidak berarti kita membuat instance dari class tersebut. Jadi, sebelum kita menggunakan inner class tersebut, kita harus membuat instancenya dari suatu tempat di dalam method dan setelah definisi inner class tersebut. [2].
Contoh :
Program 08
|
class A { //1
void myMethod() { //2
class B { //3
int i = 10;
void lakukanSesuatu() { //4
System.out.println(" i = " + i);
} //4
} //3
B b = new B();
b.lakukanSesuatu();
} //2
} //1
|
- Method-local inner class hanya dapat diinstansiasi dari dalam method yang mendefinisikan method-local inner class tersebut.
- Instance method-local inner class memiliki akses ke semua member dari outer class (termasuk member outer class yang ber access modifier private). [2]
Contoh : [1]
Program 09
|
class A { //1
private int i = 10;
void lakukanSesuatu() { //2
class B { //3
void aksesMemberOuterClass() { //4
System.out.println("i = " + i);
} //4
} //3
B b = new B();
b.aksesMemberOuterClass();
} //2
} //1
|
- Instance dari method-local inner class tidak dapat mengakses local variabel (termasuk parameter) dari method dimana method-local inner class tersebut didefinisikan. Kecuali bila variabel tersebut bermodifier final. [2]
Contoh : [2]
Program 10
|
class A { //1
void lakukanSesuatu() { //2
int nonFinalVar = 10;
final int finalVar = 11;
class B { //3
void aksesLocalVar() { //4
//ERROR
System.out.println("nonFinalVar = " + nonFinalVar);
//TIDAK ERROR
System.out.println("finalVar = " + finalVar);
} //4
} //3
B b = new B();
b.aksesLocalVar();
} //2
} //1
|
- Method-local inner class yang didefinisikan di dalam static method tidak dapat mengakses non-static member dari outer classnya [2].
- Modifier-modifier yang dapat diberikan pada method-local inner class adalah : [2]
1. abstract (tidak dapat digabung dengan final)
2. final (tidak dapat digabung dengan abstract)