Notice
Recent Posts
Recent Comments
Link
250x250
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 29 | 30 | 31 |
Tags
- REACT
- java
- 리눅스
- jenkins install
- Jenkins
- MySQL
- jenkins maven
- Spring Boot
- spring
- Linux
- Jenkins Pipeline
- grafana
- docker network
- 리액트
- jpa
- JavaScript
- jenkins 설치
- jenkins jdk
- subnetmask
- jenkins github 연동
- IntelliJ
- Docker
- grpc
- CI/CD
- error
- jenkins github
- nginx
- vue.js
- gradle
- MongoDB
Archives
- Today
- Total
뭐든 즐기면서 ;)
JAVA 함수형 인터페이스란 본문
728x90
※ 함수형 인터페이스란?
- 개념
Single Abstract Method(SAM)라고 불리기도 하며, 오로지 1개의 추상 메소드를 갖는 인터페이스입니다.
JAVA8부터 함수형 인터페이스는 1개의 추상 메소드를 포함하여, default method를 포함할 수 있습니다.
추상 메소드의 경우 오로지 1개만 존재해야 하지만, default method의 경우 제한이 없습니다. 그리고 익명함수의 한 종류인 람다식이 이러한 함수형 인터페이스를 리턴합니다.
함수형 인터페이스를 사용하는 이유는, 어찌보면 람다식을 위한 것이라고 볼 수 있습니다.
람다식은 함수형 인터페이스를 리턴하기 때문에, 코드의 간결성을 위한 람다식과 함께 사용하기 위해 함수형 인터페이스를 사용한다고 보면 됩니다. 함수형 인터페이스(즉, 람다식)가 탄생하기 전에는 익명 클래스로 표현해 왔습니다.
- 함수형 인터페이스를 작성할 시 유의사항
- 위에서 설명한 것과 같이 추상 메소드는 하나만 있어야 하며, default method와 static method의 개수 제한은 없습니다.
- @FunctionalInterface 라는 어노테이션을 사용하여 interface를 작성합니다. 이 어노테이션은 해당 interface가 함수형 인터페이스 조건에 부합한지 검사해줍니다.
- @FunctionalInterface 어노테이션 사용없이도 함수형 인터페이스로 동작하고 사용하는 데에는 문제 없지만, 함수형 인터페이스 조건에 부합한지에 대한 검증과 유지보수를 위해서는 사용해주는 것이 좋습니다.
- 사용 방법
@FunctionalInterface
interface LambdaInterface {
int max(int a, int b);
default void sampleDefault() {
System.out.println("sampleDefault 출력");
}
default void sampleDefault2() {
System.out.println("sampleDefault2 출력");
}
static void sampleStatic() {
System.out.println("sampleStatic 출력");
}
}
// 람다식을 사용하여 함수형 인터페이스를 반환 받아 선언한 변수에 대입.
public class Lambda {
public static void main(String[] args) {
// 추상 메소드는 interface에 정의되어 있고, 식 구현은 람다식에서 합니다.
LambdaInterface lambda = (int a, int b) -> a > b ? a : b;
System.out.println( lambda.max(3, 5) );
// 출력 : 5
lambda.sampleDefault();
// 출력 : sampleDefault 출력
lambda.sampleDefault2();
// 출력 : sampleDefault2 출력
lambda.sampleStatic();
// 출력 : sampleStatic 출력
}
}
- JAVA에서는 기본적으로 제공해주는 함수형 인터페이스 API가 존재합니다. https://tadaiswhatever.tistory.com/23
728x90
'BACK > JAVA' 카테고리의 다른 글
JAVA Servlet API (0) | 2022.05.03 |
---|---|
Java 올림 / Java Math / Java Math ceil (0) | 2022.03.21 |
JAVA 개념 / JAVA 이론 / JAVA 기본개념 (0) | 2021.11.14 |
JAVA 람다식 / 람다식 (0) | 2021.11.12 |
JAVA 함수형 인터페이스 API (0) | 2021.11.11 |
Comments