함수형 인터페이스란?
함수형 인터페이스(Functional Interface)는 1개의 추상 메서드를 갖고 있는 인터페이스를 말합니다. Single Abstract Method(SAM)라고 불리기도 합니다.
예를 들어, 아래와 같은 인터페이스를 함수형 인터페이스라고 합니다.
public interface FunctionalInterface {
public abstract void doSomething(String text);
}
함수형 인터페이스를 사용하는 이유는?
함수형 인터페이스를 사용하는 이유는 자바의 람다식은 함수형 인터페이스로만 접근이 되기 때문입니다.
예를 들어, 아래 코드에서 변수 func는 람다식으로 생성한 객체를 가리키고 있습니다. doSomething()에 인자로 문자열을 전달하면 람다식에 정의된 것처럼 로그로 출력을 합니다.
public interface FunctionalInterface {
public abstract void doSomething(String text);
}
FunctionalInterface func = text -> System.out.println(text);
func.doSomething("do something");
// 실행 결과
// do something
함수형 인터페이스를 사용하는 것은 람다식으로 만든 객체에 접근하기 위해서 입니다. 위의 예제처럼 람다식을 사용할 때마다 함수형 인터페이스를 매번 정의하기에는 불편하기 때문에 자바에서 라이브러리로 제공하는 것들이 있습니다.
기본 함수형 인터페이스
자바에서 기본적으로 제공하는 함수형 인터페이스는 다음과 같은 것들이 있습니다.
- Runnable
- Supplier
- Consumber
- Function<T,R>
- Predicate
이 외에도 다양한 것들이 있습니다. 자바의 java.util.function 패키지에 정의되어있으니 더 많은 것을 확인하고 싶으시면 링크를 참고하시기 바랍니다.
Runnable
Runnable은 인자를 받지 않고 리턴값도 없는 인터페이스 입니다.
public interface Runnable {
public abstract void run();
}
아래의 코드처럼 사용할 수 있습니다.
Runnable runnable = () -> System.out.println("run anything!");
runnable.run();
// 결과
// run anything!
Runnable은 run()을 호출해야 합니다. 함수형 인터페이스마다 run()과 같은 실행 메소드 이름이 다릅니다. 인터페이스 종류마다 만들어진 목적이 다르고 그 목적에 맞는 이름을 실행 메소드 이름으로 정하였기 때문입니다.
카페 게시글
Java
람다식
[Java] 함수형 인터페이스(Functional Interface)란?
주인장
추천 0
조회 19
23.03.23 02:21
댓글 0
다음검색