묠니르묘묘
꾸준히 성장하는 개발자스토리
묠니르묘묘
전체 방문자
오늘
어제
  • 분류 전체보기 (188)
    • 프로그래밍 (48)
      • 디자인패턴 (4)
      • 예외,에러 (4)
      • Java (29)
      • Kotlin (3)
      • React.js (4)
      • JavaScript (2)
      • Apache Kafka (2)
    • Spring (49)
      • Spring (21)
      • Spring Cloud (3)
      • JPA (25)
    • 코딩테스트 (31)
      • 알고리즘 (5)
      • Java - 백준 (26)
      • Java - 프로그래머스 (0)
    • AWS (7)
    • 데이터베이스 (6)
    • 개발 etc (23)
    • 도서 (5)
    • 회고록 (4)
    • 데브코스-데이터엔지니어링 (15)

인기 글

최근 글

hELLO · Designed By 정상우.
묠니르묘묘

꾸준히 성장하는 개발자스토리

함수형 인터페이스(Functional Interface)란 무엇인가?
프로그래밍/Java

함수형 인터페이스(Functional Interface)란 무엇인가?

2022. 1. 13. 16:46

https://ssdragon.tistory.com/14

 

람다식이란?

람다식(Lambda Expressions) 메서드를 하나의 식(expression)으로 표현한 것! 이름이 없는 메서드! 메서드를 람다식으로 표현하면 메서드 이름과 반환값이 없어지므로 익명 함수(anonymous function)라고도 부

ssdragon.tistory.com

위 글의 연장선이다. 함수형 인터페이스에 대해 설명하다보면 람다식이 나오니까 꼭 먼저 읽어보자.

 

 

🤔 함수형 인터페이스(Functional Interface) 란 무엇인가?

이것은 하나의 추상 메서드만을 갖는 인터페이스(Interface)이다.

그래야지 람다식과 인터페이스의 메서드가 1:1로 연결될 수 있기 때문이다!!

이 추상 메서드의 매개변수의 개수와 타입, 리턴타입과 동일한 람다식을 할당해서 사용할 수 있다.

(함수형 인터페이스의 Static 메서드와 Default 메서드의 개수에는 제약이 없다)

 

함수형 인터페이스는 2개 이상의 추상 메서드가 되지 않도록 방지하려면 @FunctionallInterface 라는 어노테이션을 붙이면 된다. 이것을 붙였을 때 2개 이상이면 자바 컴파일러가 컴파일 오류를 발생시킨다. 이 어노테이션은 선택사항이지만 실수를 방지하기 위해 달아두면 좋을 것 같다.

 

 

💻 위 사항들을 참고하여 예시를 만들어보자.

코드 중간에 getMyFunction() 메서드의 반환 타입이 MyFunction 타입으로 되어있는데 return값에 바로 람다식을 넣을 수 있다.

 

 

🤔 java.util.function 패키지란?

java.util.function 패키지은 일반적으로 자주 쓰이는 형식의 메서드를 함수형 인터페이스로 미리 정의한 것

그래서 새로운 함수형 인터페이스를 생성하지말고 가능하면 이 패키지를 활용하는 것이 좋다.

 

 

💻 자주 사용하는 가장 기본적인 함수형 인터페이스

1개의 매개변수와 리턴값의 유무에 따라 4개의 함수형 인터페이스가 정의되어 있다.

 

 

대중적으로 사용하는 타입 문자

타입 설명
<T> Type
<R> Return Type
<E> Element
<K> Key
<V> Value
<N> Number

위는 대중적으로 쓰는 암묵적인 규칙이라 보면된다.

그러므로 반드시 한 글자일 필요가 있거나 설명과 일치할 필요도 없다.

 

 

🤔 지금까지 본 함수랑 다르게 <타입문자>가 들어가는데 이건 무엇인가요?

제네릭(Generic) 이라고 합니다. 이것은 데이터 형식에 의존하지 않고, 하나의 값이 다른 데이터 타입들을 가질 수 있도록 하는 방법입니다. 좀 더 쉽게말하자면 봉투를 만들어놓고 우리가 무엇을 넣냐에 따라서 라면 타입 봉투가 되기도하고, 과자 타입 봉투가 되는거죠.

 

 

💻 매개변수가 2개인 함수형 인터페이스

매개변수가 2개인 함수형 인터페이스는 이름 앞에 'Bi' 가 붙는다.

위에서도 말했듯이 타입문자 T, U, R 이런건 너무 신경쓰지 않아도 된다. 타입이 들어간다고만 생각하자.

 

💻 매개변수가 3개 이상 함수형 인터페이스

아래 사진처럼 3개 이상부터는 직접 만들어야 한다.

 

💻 매개변수 타입과 동일한 리턴 타입인 함수형 인터페이스

Function과 BiFunction의 자손으로 위 함수형 인터페이스 2개가 있다.

 

저작자표시

'프로그래밍 > Java' 카테고리의 다른 글

컬렉션 프레임워크(Collections Framework)  (0) 2022.01.19
Java 언박싱 형변환  (0) 2022.01.14
람다식이란?  (0) 2022.01.12
JAVA 8은 왜 이렇게 많이 쓸까?  (1) 2022.01.12
Java 통합 개발 환경(IDE)  (3) 2022.01.11
    '프로그래밍/Java' 카테고리의 다른 글
    • 컬렉션 프레임워크(Collections Framework)
    • Java 언박싱 형변환
    • 람다식이란?
    • JAVA 8은 왜 이렇게 많이 쓸까?
    묠니르묘묘
    묠니르묘묘

    티스토리툴바