참고
Functional Interface
NOTE
추상 메서드가 오직 하나인 인터페이스를 말한다!
@FunctionalInterface
interface CustomInterface<T> {
// abstract method 오직 하나
T myCall();
// default method 는 존재해도 상관없음
default void printDefault() {
System.out.println("Hello Default");
}
// static method 는 존재해도 상관없음
static void printStatic() {
System.out.println("Hello Static");
}
}
Java
복사
함수형 인터페이스 예제
•
추상 메서드가 하나라는 의미는, default method와 static method는 여러개 존재해도 상관없다.
•
@FunctionalInterface 어노테이션을 이용해서, 조건에 맞는지 검사해준다.
Java 에서 기본적으로 제공하는 Functionl Interfaces
NOTE
Java에서 기본적으로 많이 사용하는 함수형 인터페이스를 알아보자!!
기본적으로 제공하는 것만으로도 대부분 가능!
Predicate( test, T → boolean )
NOTE
Predicate ⇒ 인자 하나를 받아서 boolean을 반환한다.
@FunctinalInterface
public interface Predicate<T>{
boolean test(T t);
}
Java
복사
Consumer ( accept, T → void )
NOTE
Consumer ⇒ 인자하나를 받고 아무것도 리턴하지 않는다!
@FunctionalInterface
public interface Consumer<T> {
void accept(T t);
}
Java
복사
Supplier ( get, () → T )
NOTE
Supplier ⇒ 아무런 인자를 받지 않고 T 타입의 객체를 리턴한다!
@FunctionalInterface
public interface Supplier<T> {
T get();
}
Java
복사
Function( apply, T → R )
NOTE
Function ⇒ T타입 인자를 받아서 R타입을 리턴한다!
@FunctionalInterface
public interface Function<T, R> {
R apply(T t);
}
Java
복사
Comparator( compare, (T t1, T t2) → int )
NOTE
Comparator ⇒ T타입 인자를 2개 받아서 int를 반환한다!
@FunctionalInterface
public interface Comparator<T> {
int compare(T o1, T o2);
}
Java
복사
Runnable ( run, () -> void )
NOTE
Runnable ⇒ 아무런 객체도 받지않고 아무것도 리턴하지 않는다.
@FunctionalInterface
public interface Runnable {
public abstract void run();
}
Java
복사
Callable( call, () → T )
NOTE
Callable ⇒ 아무런 인자를 받지 않고 T 타입을 호출한다!
@FunctionalInterface
public interface Callable<V> {
V call() throws Exception;
}
Java
복사
Supplier하고 동일한데 별 차이 없는게 맞다. (등장하게된 배경이 좀 다름)