이번 게시글에서는 "Variable used in lambda expression should be final or effectively final" 오류를 다루어보면서 공부한 내용을 간단하게 작성하겠다.
Java에서 람다 표현식을 사용할 때 가끔 "Variable used in lambda expression should be final or effectively final"를 볼 수 있다. 이 오류는 람다 표현식 내에서 사용되는 변수는 반드시 최종(final)이거나 사실상 최종(effectively final)이어야 함을 알려준다.
참고로, 변수가 effectively final이라는 것은 코드상에서 해당 변수에 대한 재할당이 일어나지 않음을 의미한다. 즉, 명시적으로 final 키워드를 사용하지 않아도, 변수의 값이 초기 할당 이후 변경되지 않으면 자바 컴파일러는 이를 effectively final로 취급한다.
자세한 내용은 아래 게시글을 추천한다.
람다 캡처링 :: Variable used in lambda expression should be final or effectively final의 이유