더북(TheBook)

앞서 살펴본 것처럼, 람다 표현식은 해당 표현식을 감싸고 있는 유효 범위에 있는 변수의 값을 캡처할 수 있다. 자바에는 캡처한 값이 잘 정의되어 있음을 보장하기 위한 중요한 제약이 있다. 람다 표현식에서는 값이 변하지 않는 변수만 참조할 수 있다. 예를 들어, 다음은 잘못된 참조다.


public static void repeatMessage(String text, int count) {

Runnable r = () -> {

while (count > 0) {

count--; // 오류: 캡처한 변수는 변경할 수 없다.

System.out.println(text);

Thread.yield();

}

};

new Thread(r).start();

}


신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.