Java 함수형 인터페이스란?
포스트
취소

Java 함수형 인터페이스란?

Java 함수형 인터페이스란?

  • 함수형 인터페이스란 1개의 추상 메소드를 갖는 인터페이스를 말합니다.
  • SAM(Single Abstract Method)인터페이스
  • @FunctionalInterface 어노테이션을 가지고 있는 인터페이스

위의 클래스는 static default메소드가 있지만 추상 메소드는 하나 이기 때문에 함수형 인터페이스 이다.

@FunctionalInterface 어노테이션을 설정해두면 좀더 명시적으로 함수형 인터페이스를 설정 가능하고 추상메서드를 하나 더 추가했을때 @FunctionalInterface 경고를 발생시켜준다.

사용 방법

java8 이후부터는 람다표현식(Lambda Expressions)를 이용하여 간략하게 구현가능하다.

1
2
3
4
5
6
7
public class Foo {
	 public static void main(String[] args) {
		RunSomething runSomething = () -> System.out.println("Hello"); 
	 }
}

자바에서 제공하는 함수형 인터페이스 java.util.function

nameDescripterMethod
Function<T,R>T → RR apply(T t)
PredicateT → booleanboolean test(T t)
ConsumerT → voidvoid accept(T t)

Function<T,R>

T 타입을 받아서 R 타입을 반환한다.

  • apply
  • andThen
  • compose andThen vs compose → 실행순서의 차이가 있다.

Predicate

T 타입을 받아서 boolean 을 반환한다.

  • and : Predicate를 연결해서 사용가능하다.
  • negate : test 의 반대 결과 반환한다.
  • or : 두개의 Predicate 결과를 or 연산
  • isEqual : 두개의 Predicate 결과가 동일한지 체크
  • not

Consumer

T 타입을 받아서 void를 반환한다.

  • accept

Conclusion

코드 리뷰 하면서 잘못 알고 있었던 함수형 인터페이스에대해서 다시한번 알아보면서 간단하게 정리해 보았다. 간략하게 정리해서 내용이 약간 빈약한 부분이 있지만 계속해서 추가해 나가겠다.

참조

  • https://docs.oracle.com/javase/8/docs/api/java/util/function/package-summary.html
  • https://developer-talk.tistory.com/460
  • https://bcp0109.tistory.com/313
이 기사는 저작권자의 CC BY 4.0 라이센스를 따릅니다.