람다식 /Function 패키지

Shaun·2021년 9월 12일
1

JAVA

목록 보기
22/30

람다식

  • 함수를 간단한 식으로 표현

  • 익명함수 이지만 익명객체이다

  • 메서드이름, 반환값있으면 return, 반환타입, 세미콜론 생략 가능

  • 오직 함수형 인터페이스로만 형변환 가능

int max(int a, int b){ =====> (a,b)->a>b?a:b
return a>b?a:b
}

람다식 생략

  1. 매개변수가 하나인 경우 괄호() 생략가능( 타입이 없을때만)

    (a)-> a*a ---------> a->a*a
    (int a)-> a*a ---------> 생략불가

  2. 블록안에 문장이 하나이면 { } 생략 가능,세미콜론x

(int i){
Sout(i) ; -----------> (int i)->sout(i)
}

★ 3. 익명함수 이지만 익명객체다 (메서드만 따로 존재 할수 없다)

(a,b)->a>b?a:b(메서드만 따로 존재x, 객체필요) --------> new Object(){ int max() }

3-1. 객체를 다루기 위해 참조변수가 필요하다

Object obj= new object(){
int max (){}
}

함수형 인터페이스

  • 하나의 추상메서드만 선언된 인터페이스

  • @FunctionalInterface 를 붙여줘야 함수형 인터페이스 완성

  • 인터페이스 메서드는 모두 public abstract

  • 람다식을 다루기 위한 참조변수의 타입은 함수형 인터페이스로


  • 두번째 사진을 MyFunction f= (int a, int b )->a>b?a:b 로 바꿀수 있다.

  • 람다식을 호출할때는 참조변수.메서드이름

함수형 인터페이스 타입의 매개변수와 반환타입

1. 함수형 인터페이스 타입의 매개변수

  • 함수형 인터페이스가 위와 같이 정의 되어있을때 메서드의 매개변수가 함수형인터페이스 타입이면 이 메서드를 호출할 때 람다식을 참조하는 참조변수를 매개변수로 지정해야 한다.

void aMethod(MyFunction f){
f.max
}

2. 함수형 인터페이스 타입의반 환(return 타입)

MyFunction max(){
MtFunction f=()->{};
return f---------------------------------> return ()->{};
}

java.util..function 패키지

  • 일반적으로 자주 쓰이는 형식의 메서드를 함수형 인터페이스로 미리 정의해 놓았다.

  • ex
    Supplier<T> S = 람다식 ---> S.get() = 람다식 호출

  • 매개변수가 2개인 함수형 인터페이스는 앞에 접두사 "Bi" 가 붙는다

UnaryOperator 와 BinaryOperator

  • 매개변수 타입과 반환타입의 타입이 모두 일치한다는 점만 제외하고 Function과 같다
profile
호주쉐프에서 개발자까지..

0개의 댓글