[java] Variable used in lambda expression should be final or effectively final, 람다 캡처링
Variable used in lambda expression should be final or effectively final 아래와 같이 java 코드를 작성하면 intellij에서 오류를 뱉으며 컴파일되지 않는다. int number = 1234; number = 2; Runnable r = () -> System.out.println(number); 결론부터 말하면, 람다에서는 파라메터가 아닌 외부 변수(free variable, 자유변수)를 사용 할 수 있다. 단, 지역변수는 final이거나 final처럼 사용되어야한다.(effectively final) 그 이유를 알아보자. 변수 변수에는 클래스변수, 인스턴스 변수, 지역변수가 있다. public class test { int iv; // 인스..