이 글을 읽기 전에 이 글을 먼저 읽고 오시는 걸 권장 합니다.
(함수형 인터페이스) 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 |