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