람다식과 함수형 인터페이스
7. 정리
- 람다는 함수형 인터페이스(추상 메서드 1개)의 인스턴스를 만드는 축약 문법이며, 대입되는 자리의 목표 타입으로만 해석된다.
java.util.function의Function / Supplier / Consumer / Predicate / UnaryOperator / BinaryOperator와Int/Long/Double특화형이면 실무의 95% 를 커버한다.- 메서드 참조 4종: 정적(
Class::static), 특정 객체(obj::m), 임의 객체(Class::instance— 첫 인자가 수신자), 생성자(Class::new). - 람다는 지역 변수를 값으로 복사해 캡처하므로 effectively final 이어야 한다(스택은 사라지지만 람다는 힙에서 살아남기 때문).
this는 감싸는 인스턴스이고, 컴파일은invokedynamic으로 되어 클래스 파일이 생기지 않는다. andThen / compose / and / or / negate / thenComparing으로 작은 함수를 합성하면 전략·검증·파이프라인을 데이터처럼 다룰 수 있다.
다음 레슨 04. 스트림에서는 이 람다들을 filter / map / collect 파이프라인에 꽂아 컬렉션을 선언적으로 처리하는 방법과 지연 평가·병렬 스트림의 원리를 다룹니다.