about.Programing/Java

    람다에서 메서드 지역변수를 사용할 시 주의사항

    #1. 개요 하나의 메서드 내부에서 사용되는 람다에서 사양하고 있는 메서드의 지역변수의 상태를 변경이 불가능하다. 왜 그럴까? 이해를 더 돕기위해 아래에 코드를 첨부한다. 'Variable 'a' is accessed from within inner class, needs to be final or effectively final' 이라는 경고문이 나오면 컴파일이 불가능하다. 위의 문장을 해석해보면 아래와 같다. 변수 'a'는 내부 클래스 내에서 액세스되며 final이거나 final 처럼 사용되어야 합니다. 간단히 말하면 해당 변수 a는 변경되면 안된다는 말이다. 왜 그럴까? #2. 자유변수 이유는 자유변수 때문이다. 자유변수 : 익명함수에서 처럼 메서드 자신 말고 외부에서 정의된 변수 이와 같은 자유변..