오늘,이 연구는 문제가 발생했습니다 :
클로징 범위에 정의 된 final이 아닌 지역 변수 목록을 참조 할 수 없습니다
여기서 새로운의 Runnable는 () {...} 컴파일 오류리스트의 로컬 변수 테스트 () 메소드에 액세스 부분 익명 내부 클래스이며
해결 방법 :
최종 수정 목록으로
이유 :
프로그램 실행 테스트 () 메소드는, 상기 방법은 가변 목록 호출 스택 로컬 변수를 생성 할 때,이 부분 내부 클래스 객체가 그것을 로컬 변수 목록을 액세스하여 생성 할 때 실행 종료 후 시험 방법 (), 로컬 변수 목록이 존재하지 않는, 죽었지 만했다 : 로컬 내부 클래스 객체는 (더는 더 이상 객체를 참조하는 경우에만, 그것은 죽음 없을 것), 그것은 실행 죽음의 방법 테스트 () 끝으로 종료되지 않습니다 지속 할 수있다. 로컬 내부 클래스 객체와 로컬 변수리스트주기 일관성 로컬 내부 클래스 객체의 사후 로컬 변수 목록이 존재하지 않는 변수를 액세스 할 수있다.
최종 수정을 사용하면 로컬 변수 목록을 수정 한 후 자신의 데이터 멤버로 "복사", 로컬 내부 클래스 객체의 죽음 이후 지역 변수 목록의 로컬 내부 클래스 개체 목록은 여전히 목록에 액세스 할 수 있습니다 "사본을."
참고 : Java8 또한 최종 편집을 쓸 수 없습니다 (암시 적으로 최종 추가)
(나는 Java7했다)