모던 Practical 자바 5장 스트림 API를 읽다 흥미로운 코드를 발견했다. (설명을 위해 약간 변형했습니다.) List intList = Arrays.asList(1, 2, 3, 4, 5, 6, 7, 8, 9); int sum = 0; intList.stream().forEach(n -> sum+=n); System.out.println("sum : " + sum); 문제가 전혀 없어보이는 코드지만, 다음과 같은 메시지와 함께 컴파일 에러가 발생한다. java: local variables referenced from a lambda expression must be final or effectively final 해석하자면 '람다식에서 참조되는 변수는 final 이어야 한다.'이다. 진짜 흥미로..