Computer >> 컴퓨터 >  >> 프로그램 작성 >> Java

메소드 로컬 내부 클래스가 Java의 로컬 최종 변수에 액세스할 수 있습니까?

<시간/>

예, 로컬 최종 변수에 액세스할 수 있습니다. 메서드 로컬 내부 클래스 사용 최종 변수가 에 저장되기 때문입니다. 메소드 로컬 내부 클래스만큼 오래 산다. 개체가 살아 있을 수 있습니다.

메서드 로컬 내부 클래스

  • 로컬 내부 클래스 인스턴스 인수로 전달되고 메서드에서 검색할 수 있으며 유효한 범위 내에서 사용할 수 있습니다.
  • 메서드 로컬 내부 클래스 의 유일한 제한 사항 로컬 매개변수는 최종으로 정의된 경우에만 실행할 수 있다는 것입니다. .
  • 로컬 매개변수를 실행하는 메소드는 메소드 실행 후에 호출될 수 있으며, 그 안에서 로컬 내부 클래스 선언되었다. 결과적으로 로컬 매개변수는 더 이상 값을 유지하지 않습니다.
  • 로컬 내부 클래스 개체를 만들기 전에 값을 수정해야 합니다. 필요한 경우 최종 변수가 아닌 변수를 로컬 내부 클래스에 의해 후속적으로 실행되는 최종 변수로 복사할 수 있습니다. .

예시

class MainClassTest {
   private int x = 10;
   public void sampleMethod() {
      final int y = 20;
      class MethodLocalInnerClassTest {
         public void accessMainClassVar() {
            System.out.println(x);
            // accessing the final variable
            System.out.println(c);
         }
      }
      MainClassTest mainTest = new MethodLocalInnerClassTest();
      mainTest.accessMainClassVar();
   }
}

// Test.java
public class Test {
   public static void main(String args[]) {
      MainClassTest test = new MainClassTest();
      test.sampleMethod();
   }
}

출력

10
20