람다란 무엇인가?
람다 표현식은 메서드로 전달할 수 있는 익명 함수를 단순화한 것이라고 할 수 있다. 람다표현 식에는 이름은 없지만, 파라미터 리스트, 바디, 반환 형식, 발생할 수 있는 예외 리스트는 가질 수 있다.
- 익명
보통의 메서드와 달리 이름이 없으므로 익명이라 표현한다. 구현해야 할 코드에 대한 걱정거리가 줄어든다. - 함수
람다는 메서드처럼 특정 클래스에 종속되지 않으므로 함수라고 부른다. 하지만 메서드처럼 파라미터 리스트, 바디, 반환 형식, 가능한 예외 리스트를 포함한다. - 전달
람다 표현식을 메서드 인수로 전달하거나 변수로 저장할 수 있다. - 간결성
익명 클래스처럼 많은 자질구레한 코드를 구현할 필요가 없다.
// 기존 코드
Comparator<Apple> byWeight = new Comparator<Apple>() { public int compare(Apple a1, Apple a2) {
return a1.getWeight().compareTo(a2.getWeight());
}
};
// 람다 코드
Comparator<Apple> byWeight = (Apple a1, Apple a2) -> a1.getWeight().compareTo(a2.getWeight());
람다를 적용시킬 경우 코드가 매우 간단해진다.
람다표현식은 세 부분으로 이루어진다.
- 파라미터 리스트: 메서드 파라미터 두 개
- 화살표: 람다의 파라미터 리스트와 바디를 구분
- 람다 바디: 람다의 반환값에 해당하는 표현식
어디에, 어떻게 람다를 사용할까?
함수형 인터페이스라는 문맥에서 람다 표현식을 사용할 수 있다. 함수형 인터페이스란 아래와 같은 인터페이스로 메서드를 파라미터화 할 수 있는 것이다.
public interface Predicate<T> {
boolean test (T t);
}
정확히 하나의 추상 메서드를 지정하는 인터페이스다.
람다 표현식으로 함수형 인터페이스의 추상 메서드 구현을 직접 전달할 수 있으므로 전체 표현식을 함수형 인터페이스의 인스턴스로 취급할 수 있다. 함수형 인터페이스보다는 덜 깔끔하지만 익명 내부 클래스로도 같은 기능을 구현할 수 있다.
실행 어라운드 패턴
실제 자원을 처리하는 코드를 설정과 정리 두 과정이 둘러싸는 형태를 갖게 되는데, 이와 같은 코드를 실행 어라운드 패턴이라고 부른다.
'Language Study > Java' 카테고리의 다른 글
Java 17: LTS와장기적 사용의 이유 (3) | 2024.10.12 |
---|---|
[모던 자바 인 액션] 스트림(Stream) (1) | 2024.07.25 |
[모던 자바 인 액션] 동작 파라미터화 코드 전달하기 (1) | 2024.07.23 |
[모던 자바 인 액션] 자바 8,9,10,11: 무슨 일이 일어나고 있는가? (1) | 2024.07.23 |
multi-thread 에서 두 가지 task를 번갈아가도록 (0) | 2024.03.18 |