티스토리 뷰

3. 람다란?
람다 표현식 : 메서드로 전달할 수 있는 익명함수를 단순화한 것 
- 익명 : 보통 메서드와 달리 이름이 없음
- 함수 : 특정 클래스에 종속되지 않으므로 함수라고 부른다. 단, 파라미터 리스트, 바디, 반환형식, 예외리스트를 포함함
- 전달 : 메서드인수로 전달하거나 변수로 저장할 수 있다.
- 간결성 : 익명 클래스처럼 자질 구레한 코드를 구현할 필요가 없다.

람다 표현식은
 ( 람다 파라미터 ) -화살표> 람다바디(함수 구현부분) 

(parameter) -> expression : 표현식 ==> 값으로 평가 될 수 있는 문, 값을 리턴하는 모든 문이 표현식
(parameter) -> {statement;} : 구문   ==> 최소 실행 단위, 명령문 선언문, 할당문, 조건문 반복문 등 

람다를 어디에 사용하는가?
1.  함수형 인터페이스 : 정확히 하나의 추상 메서드를 지정하는 인터페이스
많은 디폴트 메서드가 있더라도 추상메서드가 하나면 함수형 인터페이스다

2. 함수 디스크립터 : 함수형 인터페이스의 추상 메서드 시그니처는 람다 표현식의 시그니처를 가리킨다. 람다 표현식의 시그니처를 서술하는 메서드를 함수 디스크립터 라고 함
() -> {} 는 () -> void의 형식

3. 실행어라운드 패턴
: 순환패턴 - 자원을 열고, 처리한 다음, 자원을 닫는 순서로 이뤄짐
중복되는 코드가 실제 작업코드를 감싸는데 이런 패턴을 실행 어라운드 패턴이라고 함

4.함수형 인터페이스 사용
- 함수형 인터페이스의 추상 메서드 시그니처를 함수 디스크립터 라고 한다.
자바API에 포함되어있는 함수 인퍼페이스는 Predicate, Consumer, Function 등이 존재함
: 제네릭 파라미터에는 참조형만 사용할 수 있다!
자바에서 기본형을 참조형으로 변환하는 기능을 박싱, 참조형을 기본형으로 변환하는걸 언박싱이라고 함

* 함수형 인터페이스는 확인된 예외를 던지는 동작을 허용하지 않는다.

5. 형식 검사, 형식 추론, 제약
- 형식 검사 : 대상형식 : 어떤 콘텍스트에서 기대되는 람다 표현식의 형식을 대상 형식이라고 함
- 람다 바디에 일반 표현식이 있으면, void를 반환하는 함수 디스크립터와 호환됨
- 형식 추론 : 컴파일러가 람다 표현식의 파라미터 형식에 접근할 수 있으므로, 람다 문법에서 파라미터 형식을 생략할 수 있음
- 지역변수 사용 : 람다 캡쳐링 : 람다 표현식에서는 지역변수 뿐 아니라 자유변수를 활용할 수 있다. 단, 한 번만 할당된 지역변수를 캡쳐할 수 있다! (캡쳐 : 자신의 바디에서 참조하는 것)

6. 메서드 참조/생성자 참조
- 기존의 메서드 정의를 재활용해서 람다처럼 전달 가능, 가독성을 높일 수 있음
메서드명 앞에 구분자(::)를 붙이는 방식으로 메서드를 참조를 활용할 수 있음
- 생성자 참조 : ClassName::new 처럼 클래스 네임과 new를 키워드를 사용해서 기존 생성자 참조를 만들 수 있음

요약
* 람다 표현식은 익명 함수의 일종이다. 이름은 없지만 파라미터 리스트, 바디, 반환형식을 가지며 예외를 던질 수 있다.
* 함수형 인터페이스는 하나의 추상 메서드만 정의하는 인터페이스다.
* 람다 표현식을 이용해 함수형 인터페이스의 추상 메서드를 즉석으로 제공할 수 있으며 람다 표현식 전체가 함수형 인터페이스의 인스턴스로 취급된다.

공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
TAG
more
«   2025/02   »
1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28
글 보관함