이전
함수형 인터페이스(Functional Interface)
함수형 인터페이스는 1개의 추상 메소드를 갖고 있는 인터페이스 이다.
Single Abstract Method(SAM) 라고 불리기도 한다.
default method, static method 는 존해도 상관없음
public interface Sam(){
public abstract void Patisserie(String wheat);
}
A functional interface is an interface that has just one abstract method (aside from the methods of Object), and thus represents a single function contract.
함수형 인터페이스를 사용하는 이유
함수형 인터페이스란 함수를 일급객체로 사용할 수 없는 자바 언어의 단점을 보완하기 위해 도입 됐다. 덕분에 자바는 전보다 간결한 표현이 가능하며, 가독성이 높아지게 됐다(?)
함수형 인터페이스를 사용하는 이유는 자바의 ‘람다식’은 함수형 인터페이스로만 접근이 가능하기 때문이다.
public interface Sam(){
public abstract void patisserie(String wheat);
}
Sam func = text -> System.out.println(text);
func.patisserie("프랑스");
//프랑스
익명클래스를 이용한 방법
Sam func = new Sam(){
@Override
public void patisserie(String text){
System.out.println(text);
}
};
func.patisserie("프랑스");
정리하면, 함수형 인터페이스를 사용하는 것은 람다식으로 만든 객체에 접근하기 위해서 입니다. 위의 예제처럼 람다식을 사용할 때마다 함수형 인터페이스를 매번 정의하기에는 불편하기 때문에 자바에서 라이브러리로 제공하는 것들이 있습니다.
Package java.util.function
Functional Interface | Descriptor | Method |
---|---|---|
Predicate | T -> boolean | boolean test(T t) |
Consumer | T -> void | void accept(T t) |
Supplier | () -> T | T get() |
Function<T,R> | T -> r | R apply(T t) |
Comparator | (T, T) -> int | int compare(T o1, T o2) |
Runnable | () -> void | void run() |
Callable | () -> T | V call() |
각 함수형 인터페이스는 별도로 post 할 예정.