자바 8부터 표준 API로 제공되는 함수적 인터페이스는 java.util.function패키지로 제공
제공된 함수적 인터페이스의 목적은
메소드 또는 생성자의 매개 타입으로 사용되어 람다식을 대입할 수 있도록 하기 위함이다.
이를 통해 비지니스 로직을 더욱 빠르게 구현할 수 있다.
◆ Consumer 함수적 인터페이스
- 매개값만 있고 리턴값이 없는 추상메소드를 가짐.
전달인자로 받은 매개값을 소비만하는/리턴값이 없는 로직에 사용
Consumer 인터페이스는 특정 객체를 소비합니다. 소비한다는 것이 뭘까요? 바로, 매개 변수를 사용만 하고 리턴을 하지 않는다는 뜻입니다. 그래서 추상 메소드의 리턴 형태가 void가 됩니다. 그리고 모두 추상 메소드로 accpet()를 가지고 있기 때문에 인터페이스를 사용하기 위해서는 이를 정의해 주어야 합니다.
※ 매개 변수의 타입과 수에 따라 분류
◆ Supplier 함수적 인터페이스
- 매개값은 없고 리턴값만 있는 추상메소드를 가짐.
Supplier 인터페이스는 특정 값을 리턴합니다. 이때, 주의하실 점이 이 인터페이스는 매개변수를 갖지 않습니다. 따라서 람다 바디 내에서 변수를 정의한 후 값을 리턴하도록 설계해야합니다. 추상 메소드는 공통적으로 getXXX() 형태이며, 이를 정의해 주어야 인터페이스를 사용할 수 있습니다.
※ 리턴타입에 따라 분류
◆ Function 함수적 인터페이스
- 매개값과 리턴값이 모두 있는 추상 메소드를 가짐.
- 주로 매개값을 리턴값으로 매핑(타입변환)할 경우 사용
Function 함수적 인터페이스는 매개값을 리턴값으로 매핑(타입 변환)합니다. 추상 메소드는 공통적으로 applyXXX() 형태이며, 이를 정의해 주어야 인터페이스를 사용할 수 있습니다.
※ 매개 변수 타입과 리턴 타입에 따라 분류
◆ Operator 함수적 인터페이스
- 매개값과 리턴값이 모두 있는 추상 메소드를 가짐.
- 주로 매개값을 연산하고 그 결과를 리턴할 경우에 사용
Operator 함수적 인터페이스는 Function과 동일하게 매개 변수와 리턴값이 있는 applyXXX() 메소드를 가지고 있습니다. 하지만 이 메소드들은 매개값을 리턴값으로 매핑하는 역할보다는 매개값을 이용해서 연산을 수행한 후 동일한 타입으로 리턴값을 제공하는 역할을 합니다.
※ 매개 변수 타입과 수에 따라 분류
◆ Predicate 함수적 인터페이스
- 매개값 조사하여 true 또는 false를 리턴할 때 사용(필터링 목적!)
따라서 리턴타입은 boolean이다.
Predicate 인터페이스는 매개 변수와 boolean 리턴값이 있는 test() 추상 메소드를 가지고 있습니다. 이 메소드는 매개값을 조사해서 true 또는 false를 리턴하는 역할을 합니다.
※ 매개변수 타입과 수에 따라 분류
똑같은 메소드이름일지라도, 익명구현객체에서 오버로딩된 내용에 따라 모두 다른 기능으로 사용할 수 있다!!!