- 람다는 자바 8에서 도입된 익명 함수를 간결하게 표현하는 방식으로, 함수형 프로그래밍을 지원합니다. ✨
- 메서드 반환 타입, 이름, 매개변수 타입, 심지어 단일 반환문의 중괄호와
return 키워드까지 생략하여 코드를 간소화할 수 있습니다. 📝
- 람다는 함수를 변수에 저장하는 것이 아니라, 함수형 인터페이스의 인스턴스로 변환되어 익명 구현 객체처럼 사용됩니다. 🧩
- 익명 클래스와 달리 람다는 컴파일 시 별도의
.class 파일을 생성하지 않고, invokedynamic 명령을 통해 런타임에 동적으로 처리됩니다. 🚀
- 람다 내부의
this 키워드는 람다를 감싸는 외부 클래스의 인스턴스를 참조하며, 익명 클래스의 this는 자체 인스턴스를 참조하는 것과 다릅니다. 🔄
- 자바는 함수를 위한 별도의 자료형이 없으므로, 단 하나의 추상 메서드를 가진 '함수형 인터페이스'를 활용하여 람다를 익명 객체처럼 사용합니다. 🎯
java.util.function 패키지는 Runnable, Consumer, Predicate, Function 등 다양한 표준 함수형 인터페이스를 제공하여 반복적인 선언을 줄여줍니다. 📚
- 컴파일러는 제네릭 타입과 컨텍스트를 기반으로 람다의 매개변수 및 반환 타입을 추론하여 코드 작성의 편의성을 높입니다. 🤔
- Wrapper 클래스 사용 시 발생하는 박싱/언박싱 오버헤드를 피하기 위해
IntFunction과 같은 기본형 특화 인터페이스를 사용하는 것이 좋습니다. 📦
- 복잡한 제네릭이나 타입 추론에 어려움이 있을 경우, 명시적으로 타입을 지정하면 가독성과 성능을 향상시킬 수 있습니다. 💡
데브허브 | DEVHUB | [10분 테코톡] 리버의 람다