public class Outerclass {
// instance method of the outer class
void my_Method() {
int num = 23;
// method-local inner class
class MethodInner_Demo {
public void print() {
System.out.println("This is method inner class "+num);
}
} // end of inner class
// Accessing the inner class
MethodInner_Demo inner = new MethodInner_Demo();
inner.print();
}
public static void main(String args[]) {
Outerclass outer = new Outerclass();
outer.my_Method();
}
}
Chỗ int a; bạn đặt bên trong method OutterMethod thử xem
Khi sử dụng Method-Inner Class hoặc Annonymoust Inner Class thì các biến bên ngoài các class này phải được khai báo là final khi được sử dụng bởi các Class này.
Tại sao lại thế ? Đó là do tính chất phức tạp của việc biến có thể bị thay đổi cả trong và ngoài 2 Class trên, nên việc khai báo final sẽ đỡ phức tạp hơn.
It’s basically due to the way Java manages closures.
Xin lỗi bạn, do mình chưa xài cái này bao giờ cả, mà cũng chả biết công dụng của nó. Bạn giải thích được không
Cái Method-Inner class này ít khi được sử dụng, phần lớn là người ta dùng Inner class và Annonymous Inner Class.
cái này là inner local class nha
Mình thấy có vd này trên Tutorialpoint
Chỗ
int a;bạn đặt bên trong method OutterMethod thử xemXin lỗi bạn, do mình chưa xài cái này bao giờ cả, mà cũng chả biết công dụng của nó. Bạn giải thích được không?
Khi sử dụng Method-Inner Class hoặc Annonymoust Inner Class thì các biến bên ngoài các class này phải được khai báo là final khi được sử dụng bởi các Class này.
Tại sao lại thế ? Đó là do tính chất phức tạp của việc biến có thể bị thay đổi cả trong và ngoài 2 Class trên, nên việc khai báo final sẽ đỡ phức tạp hơn.
Cái Method-Inner class này ít khi được sử dụng, phần lớn là người ta dùng Inner class và Annonymous Inner Class.