람다식(Labmda Expression) 이란 ?
- 함수를 하나의 식(expression)으로 표현한 것
- 익명 함수(Anonymous Function)라고도 한다.(보통의 함수와 달리 이름이 없으므로)
- 메서드처럼 특정 클래스에 종속되지 않기에 함수라고 부른다.
- java에서 클래스를 만들지 않으면 함수를 사용할 수 없는데 함수형 인터페이스와 함께 람다를 제공함으로써 제약없이 함수를 사용할 수 있다.
- java에서 기본적으로 함수형 인터페이스를 제공해주기 때문에 따로 생성하지 않아도 된다.(https://docs.oracle.com/javase/8/docs/api/java/util/function/package-summary.html)
- 참조 변수로 함수형 인터페이스가 사용된다.
- 익명 클래스 객체와 동등하다.
cf) 익명 클래스(Anonymous Class): 클래스 선언과 생성을 동시에 하여 한 번만 사용될 수 있고 오직 하나의 객체만 생성하는 일회용 클래스
cf) 익명 함수(Anonymous Function): 함수의 이름이 없는 함수로, 일급 객체로 변수처럼 사용이 가능하다.(메서드 인수, 변수로 저장)
cf) 함수형 인터페이스(Functional Interface): 추상 메서드가 오직 하나인 인터페이스
ex)
// 기존 방식
Comparator<Integer> comparator = new Comparator<Integer>() {
@Override
public int compare(Integer o1, Integer o2) {
return 0;
}
};
// 람다식
Comparator<Integer> comparator2 = (i1, i2) -> 0;
장점
- 코드 라인 수를 줄여준다.
- Stream API를 사용해 순차 및 병렬 작업에 도움을 준다.
- 가독성이 좋다.
단점
- 재사용 불가
- 디버깅이 어렵다.
- 람다를 남발하면 비슷한 함수가 중복되어 코드가 지저분해진다.
https://mangkyu.tistory.com/113
https://steemit.com/kr/@parkjp/java
https://docs.oracle.com/javase/tutorial/java/javaOO/lambdaexpressions.html
https://www.digitalocean.com/community/tutorials/java-8-functional-interfaces#why-do-we-need-lambda-expression
https://ssdragon.tistory.com/14
'Backend > Java' 카테고리의 다른 글
Annotation(@) (0) | 2022.08.15 |
---|---|
순수 함수란? (0) | 2022.08.12 |
Reflection(리플렉션) (0) | 2022.08.08 |
직렬화 (0) | 2021.06.12 |
추상클래스와 인터페이스 (0) | 2021.06.11 |