01/10/2018, 08:20

Cho em hỏi về inner class trong java với ạ

Cho em hỏi sao sử dụng biến a ở đó lại báo lỗi ạ

Nguyễn Tuấn Anh viết 10:20 ngày 01/10/2018

cái này là inner local class nha

Phan Bá Hải viết 10:28 ngày 01/10/2018

Mình thấy có vd này trên Tutorialpoint

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

Phan Bá Hải viết 10:27 ngày 01/10/2018

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?

anon52681320 viết 10:24 ngày 01/10/2018

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.

Bài liên quan
0