Predicate<String> isEmptyStr = s -> s.length() == 0;
String s = "";
if(isEmptyStr.test(s)) // if(s.length() == 0)
System.out.println("This is an empty String.");
Q. 아래의 빈 칸에 알맞은 함수형 인터페이스(java.util.function 패키지)를 적으시오.
[ ] f = () -> (int)(Math.random() * 100) + 1;
[ ] f = i -> System.out.print(i + ", ");
[ ] f = i -> i % 2 == 0;
[ ] f = i -> i / 10 * 10;
A. 정답
Supplier<Integer> f = () -> (int)(Math.random() * 100) + 1;
Comsumer<Integer> f = i -> System.out.print(i + ", ");
Predicate<Integer> f = i -> i % 2 == 0;
Function<Integer, Integer> f = i -> i / 10 * 10;
매개변수가 2개인 함수형 인터페이스
만약 매개변수 3개이상을 가진 함수형 인터페이스가 필요하면 다음과 같이 직접 만들면 된다.
@FunctionalInterface
interface TriFunction<T, U, V, R>{
R apply(T t, U u, V v);
}
매개변수의 타입과 반환 타입이 일치 하므로 타입을 하나만 써주면 된다.
// UnaryOperator는 Function의 자손이다.
@FunctionalInterface
public interface UnaryOperator<T> extends Function<T, T>{
static <T> UnaryOperator<T> identity() { // 항등함수
return t -> t;
}
}