끄적끄적
[java]람다식(Lambda Expression) 본문
람다식
- Stream 연산들은 매개변수로 함수형 인터페이스를 받도록 되어있다. 람다식은 반환식으로 함수형 인터페이스를 반환한다.
- 람다식: 함수를 하나의 식으로 표현한 것. 메서드의 이름이 필요 없기 때문에 익명 함수의 한 종류이다.
-익명 함수: 함수의 이름이 없는 함수로, 모두 일급 객체이다. 일급 객체인 함수는 변수처럼 사용 가능하며 매개 변수로 전달이 가능하다는 특징이 있다.
1급 객체/1급 시민
- 변수나 데이터를 할당할 수 있다.
- 메서드의 인자로 사용할 수 있다.
- 리턴값으로 사용할 수 있다.
람다식의 특징
- 람다식 내에서 사용하는 지역 변수는 final을 붙이지 않아도 상수로 간주
- 람다식으로 선언된 변수명은 다른 변수명과 중복할 수 없다.
람다식의 장점
- 코드를 간결하게 만들 수 있다.
- 식에 개발자의 의도가 명확히 드러나 가독성이 높아진디.
- 병렬 프로그래밍이 용이하다
- 함수를 만드는 과정 없이 한번에 처리할 수 있어 생산성이 높아진다.
람다식의 단점
- 남발하면 코드가 지저분해질 수 있다.
- 재귀로 만들 경우 부적합 하다.
- 무명함수는 재사용이 불가능하다.
- 디버깅이 어렵다.
함수형 인터페이스
- 자바는 객체지향적 함수로, 순수 함수와 일반 함수를 다르게 취급한다.
- 함수형 인터페이스: 함수를 1급 객체처럼 다를 수 있게 해주는 어노테이션.(@FunctionalInterface) 단 하나의 추상 메서드를 갖도록 제한한다.
- 람다식으로 생성된 순수 함수는 함수형 인터페이스로만 선언이 가능하다.
순수함수
- 동일한 입력에는 항상 같은 값을 반환한다.
- 함수의 리턴값은 오로지 input에만 의존한다.
- 함수 실행에 의한 부수효과(함수 외부 변수 값 변경/ 예외,오류로 프로그램 중단)가 없어야한다.
메서드 참조
- 메서드의 참조를 전달한다는 의미. 람다 표현식에서 하나의 메서드만을 호출하는 경우 불필요한 매개변수를 제거하고 간단히 사용 가능하다.
- 클래스이름::메서드이름
- 참조변수이름::메서드이름
'CS 공부' 카테고리의 다른 글
RestAPI 란 (0) | 2022.03.28 |
---|---|
람다식 (2) (0) | 2022.03.26 |
thread와 런에이블 (0) | 2022.03.20 |
[java] static (0) | 2022.03.18 |
[java] 배열 리스트의 동적 동작 (0) | 2022.03.17 |