더북(TheBook)

람다 표현식의 몸체는 중첩 블록과 동일한 유효 범위를 가진다. 따라서 중첩 블록과 동일한 이름 충돌 및 가리기 규칙이 적용된다. 지역 변수와 이름이 같은 파라미터나 다른 지역 변수를 람다 내부에 선언하는 것은 규칙에 어긋난다.


Path first = Paths.get("/usr/bin");

Comparator<String> comp =

(first, second) -> Integer.compare(first.length(), second.length());

// 오류: 변수 first가 이미 정의되어 있다.


 

메서드 내부에서 이름이 같은 두 지역 변수를 보유할 수 없기 때문에 람다 표현식 내부에도 이러한 변수를 도입할 수 없다.

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