반응형
함수형 인터페이스 (Functional Interface)
- 추상 메소드를 딱 하나만 가지고 있는 인터페이스
- SAM (Single Abstract Method) 인터페이스
- @FuncationInterface 애노테이션을 가지고 있는 인터페이스
람다 표현식 (Lambda Expressions)
- 함수형 인터페이스의 인스턴스를 만드는 방법으로 쓰일 수 있다.
- 코드를 줄일 수 있다.
- 메소드 매개변수, 리턴 타입, 변수로 만들어 사용할 수도 있다.
자바에서 함수형 프로그래밍
- 함수를 일급 객체(First class object)로 사용할 수 있다.
- 순수 함수 (Pure function)
- 사이드 이팩트가 없다. (함수 밖에 있는 값을 변경하지 않는다.)
- 같은 값이 입력되면 같은 값이 반환되는 것을 보장한다.
- 상태가 없다. (함수 밖에 있는 값을 사용하지 않는다.)
- 순수 함수를 만들기 위해서는 주의점 : 함수 밖에있는 값을 참조하거나 변경하려고 하면 안된다. 오로지 함수 내부에서 쓰는 값, 함수가 전달 받은 파라미터만 가지고 사용해야한다.
- 사이드 이팩트가 없다. (함수 밖에 있는 값을 변경하지 않는다.)
- 고차 함수 (Higher-Order Function)
- 함수가 함수를 매개변수로 받을 수 있고 함수를 리턴할 수도 있다.
- 불변성
[참고자료]
반응형
'Java > 기본' 카테고리의 다른 글
자바 람다(Java Lambda) - 3 (람다 표현식 사용 조건) (0) | 2021.06.17 |
---|---|
자바 람다(Java Lambda) - 2 (자바 함수형 인터페이스) (0) | 2021.06.16 |
자바 애노테이션 프로세서(Java Annotation Processor) (0) | 2021.06.03 |
자바 다이나믹 프록시(Java Dynamic Proxy) - 2 (0) | 2021.06.01 |
자바 다이나믹 프록시(Java Dynamic Proxy) - 1 (0) | 2021.05.31 |