본문 바로가기
교육/Java

Java 개발자 수업 89일차 - 함수형 인터페이스(Functional Interface), Consumer, Supplier

by yhyuk 2021. 8. 7.
728x90
반응형

1. 함수형 인터페이스(Functional Interface)

2. Consumer

3. Supplier


1. 함수형 인터페이스(Functional Interface)

- 람다식과 함께 자바 8 부터 지원(JDK 1.8)

- 개발자가 직접 정의하는 방식 (어제 배운 람다식)

- JDK에서도 많은 수의 함수형 인터페이스를 제공한다. (Consumer, Supplier, Function, Operator, Predicate ..등 )

 

[ 표준 API 함수형 인터페이스 ]

- 추상 메소드 1개 짜리 인터페이스

 

2. Consumer

[ 정의 ]

- 컨슈머(뜻: 소비자)

- 매개변수를 받아서 소비하는 일을 구현한다.

- acceptXXX() 메소드를 제공한다.

- 매개변수O, 반환값X

- Consumer<T>, BiConsumer<T, U>.. 등 많은데 우선 이 2가지만 머릿속에 꼭 기억해두자.

 

[ 예제 - Consumer, BiConsumer ]

// 1. Consumer
Consumer<String> c1 = str -> System.out.println("문자수: " + str.length());
c1.accept("홍길동");

Consumer<Integer> c2 = n -> {
    for (int i=0; i<n; i++) {
        System.out.println(i);
    }
};
c2.accpet(10);


// 2. BiConsumer
BiConsumer<String, Integer> bc1 = (nmae, age) -> System.out.printf("이름: %s, 나이: %d\n", name , age);
b1.accpet("홍길동", 20);

BiConsumer<Integer, Integer> bc2 = (n1, n2) -> System.out.println(n1 > n2 ? n1 : n2);
b2.accpet(100, 200);



--> Consumer Output
문자수: 3
0
1
2
3
4
5
6
7
8
9

--> BiConsumer Output
이름: 홍길동, 나이: 20
200

 

3. Supplier

[ 정의 ]

- 서플라이어(뜻: 공급자)

- 반환값을 제공(공급)하는 역할을 한다.

- getXXX() 메소드를 제공한다.

- 매개변수X, 반환값O

- Supplier<T>

 

[ 예제 - Supplier ]

Supplier<String> s1 = () -> "홍길동";
System.out.println(s1.get());

Supplier<Integer> s2 = () -> {
    Calendar c = Calendar.getInstance();
    return c.get(Calendar.YEAR);
}
System.out.println(s2.get());


--> Output
홍길동
2021

MEMO>

# 현재 하고있는 함수형 인터페이스는 머릿속에 잘 정리해두면 나중에 자바스크립트에도 똑같이 쓰일 수 있으며, 나온지 7년 정도 된 기술이지만 현재 다시 뜨고있는 기술이므로, 나중에 취업을 위해서라도 잘 이해하도록 하자.

# 웹 프로젝트 마지막 주 시작!!
728x90
반응형

댓글