함수형 인터페이스 정리

태규 최·2022년 8월 22일
0

함수형 인터페이스

  • 추상 메서드를 하나만 가지고 있는 인터페이스
  • Single Abstract Method 인터페이스
  • FunctionalInterface 애노테이션을 가지고 있는 인터페이스

람다 식은 익명 클래스의 객체와 같다.

interface MyFunction{
	public abstract int max(int a , int b);
}

이 인터페이스를 익명 객체로 생성 할 수 가 있다.

MyFunction f = new MyFunction(){

	public int max(int a , int b){
    	return a>b?a:b;
    }
}

위의 코드를 람다식을 이용을 해서 바꿀 수가 있다.

MyFunction f = (a, b) -> a > b ? a : b;

람다식으로 변환이 가능한 이유가 f의 인터페이스와 람다식의 메서드 선언부가 ㅇ리치하기 때문이다.

그리고 람다식도 실제로는 익명 객체 취급

람다식의 매개 변수의 타입과 개수 그리고 반환 값이 일치하기 때문이다.

람다 표현식

  • 함수형 인터페이스의 인스턴스를 만드는 방법으로 생성 할 수가 있다.
  • 코드를 줄일 수 있다.
  • 메소드 매개변수 , 리턴 타입 , 변수로 만들어 사용 할 수도 있다.
  • 람다식으로 할때는 매개변수의 타입이 맞다면 생략할 수 있다.

자바에서의 함수형 프로그래밍

  • 자바에서 함수를 일급객체로 사용 할 수 있다.

일급 객체
1. 변수나 데이터에 할당 할 수 있어야 한다.
2. 객체의 인자로 넘길 수 있어야 한다.
3. 객체의 리턴값으로 리턴 할 수 있어야 한다.

  • 순수함수 - 사이드 이펙트가 없고 상태가 존재하지 않는다.
  • 고차 함수
    - 함수가 함수를 매개변수로 받을 수 있고 함수를 리턴 할 수도 있다.
  • 불변성

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

함수형 인터페이스메서드설명
java.lang.runnablevoid run()매개 변수도 없고 반환값도 없음
Supplier get()매개변수 X 반환값 O
Consumeraccpet(T t)매개 변수 O 반환 값 X
FunctionR apply(T t)일반 적인 함수 하나의 매개 변수를 받아서 결과를 반환
Predicateboolean test(T t)조건식을 표현하는데 사용, 매개 변수는 하나 반환 타입은 boolean
UnaryOperatorT apply(T t)매개변수와 리턴 타입이 같은 Function의 자손
BinaryOperatorT apply(T t , T t2)BiFunction의 자손 매개 변수 2개를 받고 리턴 타입도 같다

기본 형을 제공하는 함수형 인터페이스

기본형 타입의 값을 처리할 떄도 래퍼 클래스를 사용하는 단점이 있는데 이를 해결 시켜 준다.

함수형 인터페이스메서드설명
DoubleToIntFunctionint applyAsInt(double d)A To B 함수는 입력이 A 타입이고 출력이 B 인 타입
ToIntFuncitonint applyAsInt(T value)To B 함수는 출력이 B 타입이다.
IntFunctionR apply(T t , U u)AFuntion은 입력이 A타입이고 출력은 제네릭 타입이다
OBjIntConsumervoid accept(T t, U u)ObjAFunction은 입력이 T, A타입이고 출력은 없다.

0개의 댓글