Java가 제공하는 함수형 인터페이스

구름코딩·2020년 9월 30일
0

java8 _ 더 자바

목록 보기
3/23

기존 생성자 방식

Plus10 p10 = new Plus();
System.out.println(p10.apply(10);

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

Function<T, R> - 인자 T 자료형, 반환값 R 자료형
여기서는 Integer로 설정후 진행

Function 한개의 인자와 한개의 반환값을 가지는 인터페이스

Function<Integer, Integer> p10 = (i) -> 10+i;
p10.apply(10);

UnaryOperator 한개의 인자와 한개의 반환값을 가지는 인터페이스 (단, 2개의 타입이 모두 같은 경우)

UnaryOperator<Integer> minus10 = (i) -> i - 10;
minus10.apply(20);

BiFunction 두개의 인자와 한개의 반환값을 가지는 인터페이스 (단, 3개의 타입이 모두 다른 경우)

BiFunction<String, Character, Boolean> ohterSame = (s, c) -> {
    if (s.startsWith(c.toString()))
        return true;
    else
        return false;
};

BinaryOperator 두개의 인자와 한개의 반환값을 가지는 인터페이스 (단, 3개의 타입이 모두 같은 경우)

BinaryOperator<Integer> isSame = (num1, num2) -> {
    if (num1 == num2)
        return num1 + num2;
    else if (num1 > num2)
        return num1 * num2;
    else
        return 0;
};

Consumer 한개의 인자만을 받고 반환값을 가지지 않는 인터페이스

Consumer<Integer> printI = (i) -> System.out.println(i);
printI.accept(10);

Supplier 인자도 반환도 없는 인터페이스

Supplier<Integer> get10 = () -> 10;
get10.get();

Predicate 하나의 인자를 받고 Boolean값으로 반환하는 인터페이스

Predicate<String> startWithWoon = (s) -> s.startsWith("woon");
Predicate<Integer> isEven = (i) -> i % 2 == 0;

인터페이스를 이용하는 메서드

B인터페이스 연산 진행 후, A인터페이스 진행

  • A.compose(B)
UnaryOperator<Integer> plusAndMulti = multiply.compose(p10);
plusAndMulti.apply(10) // 2 * (10 + 10)

A인터페이스 연산 후, B 인터페이스 진행

  • A.andThen(B)
Function<Integer, Integer> multiAndPlus = p10.andThen(multiply);
plusAndMulti.apply(10); // 10 + (2 * 10)
profile
내꿈은 숲속의잠자는공주

0개의 댓글