함수형 인터페이스

SeokHwan An·2022년 7월 4일
0

java8

목록 보기
1/2

함수형 인터페이스

함수형 인터페이스란?

  1. 추상 메소드를 하나만 가지고 있는 인터페이스

    추상 메소드란 자식 클래스에서 반드시 오버라이딩해야한 사용할 수 있는 메소드

  2. SAM(Single Abstract Method) 인터페이스
  3. @FuncationInterface 애노테이션을 가지고 있는 인터페이스

여기서 추상 메소드가 하나라는 것은 default method 혹은 static method는 여러개 존재해도 무방하다는 것을 의미합니다.

함수형 인터페이스 예시

자바에서 제공해주는 함수형 인터페이스

1.Fuction<T, R>

  • T 타입을 받아서 R 타입을 리턴하는 함수 인터페이스

2.BiFunction<T, U, R>

  • 두 개의 값(T,U)를 받아서 R 타입을 리턴하는 함수 인터페이스

3.Consumer<T>

  • T 타입을 받아서 아무값도 리턴하지 않는 함수 인터페이스

4.Supplier<T>

  • T 타입의 값을 제공하는 함수 인터페이스

5.Predicate<T>

  • T 타입을 받아서 boolean을 리턴하는 함수 인터페이스

6.UnaryOperator<T>

  • Function<T, R>의 특수한 형태로, 입력값 하나를 받아서 동일한 타입을 리턴하는 함수 인터페이스

7.BinaryOperator<T>

  • BiFunction<T, U, R>의 특수한 형태로, 동일한 타입의 입렵값 두개를 받아 리턴하는 함수 인터페이스

이외에도 java에서는 더 많은 함수형 인터페이스를 제공해줍니다. 다양한 함수형 인터페이스를 찾고 싶으면 다양한 함수형 인터페이스 참고해주세요!

함수형 인터페이스를 사용하는 이유

우리가 함수형 인터페이스를 사용하는 이유는 java 8에서 나타난 람다(Lamda)식을 사용하기 위함이다. 여기서 왜 람다식을 사용해야하는지에 대한 의문이 생길 것이다. 람다식을 사용하는 이유는 불필요한 코드를 줄이고, 가독성을 높이기 위함입니다. 그렇기에 함수형 인터페이스의 인스턴스를 생성하여 함수를 마치 변수처럼 선언하여 First class object로 사용가능합니다.

First class object는 다른 객체들에 일반적으로 적용 가능한 연산을 모두 지원하는 객체를 의미한다. [위키백과]

참고 강의

https://www.inflearn.com/course/the-java-java8

0개의 댓글