함수형 인터페이스

SlowAnd·2023년 12월 30일
0

Today I Learned Java

목록 보기
2/8

람다식을 사용하기 위해 미리 인터페이스를 정의해놓은 java.util.function 패키지가 있음.
-> 람다식의 타입은 함수형 인터페이스

함수형 인터페이스는 단 하나의 추상 메서드만 가져야함

나름 종류별로 함수형 인터페이스가 있음.

중요한 인터페이스 :

Consumer, Function, Predicate, Supplier

Consumer - Input입력값만 있는 경우


Interface Consumer< T > 의 T타입은 input 파라미터의 타입임.

//자바가 컨슈머는 리턴타입이 없는걸 이미 알고 있어서, void면 알아서 인식
Consumer consumer = (x) -> System.out.println(x);
consumer.accept(3);

파라미터로 들어가는 x의 타입은?? Object, 즉 모른다.
Object를 쓰면 형변환 해야 하는 문제가 생긴다.
Counsuemr < T >로 제네릭으로 선언되어 있으니 타입을 선언해주는게 좋다.
-----------------------------------------------------------
Consuemr<Integer> = (x) -> System.out.println(x);
consumer.accept(3);

Supplier - Output 출력만 있는 경우

Interface Supplier< T > 의 T타입은 리턴의 타입임.

Supplier<String> supplier = () -> "made in korea";
String result = supplier.get(); 

Function - 입출력이 모두 있는 경우



Interface Function < T , R >의 T타입은 Input타입, R타입은 Output 타입

Function<String, List<String>> function = (string) -> {
	return List.of(string);
};
String hello =function.apply("hello").get(0);

Predicate - 참거짓을 판단하는 경우



Interface Predicate< T >의 T타입은 Input타입이다.

Predicate<String> predicate = (string) -> "hello".equals(string);
predicate.test("hello");

0개의 댓글