홈 › 고급 › 03 / 10

람다식과 함수형 인터페이스

섹션 7진행 0 / 10

7. 정리

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

다음 레슨 04. 스트림에서는 이 람다들을 filter / map / collect 파이프라인에 꽂아 컬렉션을 선언적으로 처리하는 방법과 지연 평가·병렬 스트림의 원리를 다룹니다.