본문 바로가기

자바 8

람다(lambda) 표현식

이 글을 읽기 전에 이 글을 먼저 읽고 오시는 걸 권장 합니다. 

(함수형 인터페이스) https://threeo.tistory.com/43

 

람다식을 사용할 때, 타입은 생략을 할 수 있음.

 

1.

   변수 캡쳐  

 

effective final → (사실상 파이널)

                자바 8부터 final을 안쓰고 로컬 클래스, 익명클래스, 람다 모두에서 변수를 가져와 쓸 수 있다.

 

로컬 클래스, 익명클래스, 람다 의 차이점

→ 로컬, 익명 클래스는 *shadowing 이 가능 하지만,  

*shadowing : 밖에 있는 변수명과 같은 변수가 있다면 안쪽 로컬 변수를 캐치

                   why? : 스코프(scope)가 다르기 때문에

 

→ 반면에 람다는 자신을 감싸고 있는 스코프(scope)와 같다고 인식한다. *shadowing이 일어나지 않음.

    그래서 같은 변수명을 쓸 수가 없고, 이펙티브 파이널이 아니라면 참조 할 수가 없다. (컴파일에러)

 

 

 

 

 

 

   

   

   

 

'자바 8' 카테고리의 다른 글

메소드 레퍼런스 (Method Reference)  (0) 2022.04.04
함수형 인터페이스(@FunctionalInterface)  (0) 2022.04.04