Java

[Java] 람다식 표현

seoooc 2022. 1. 17. 18:46

람다식

: 하나의 메소드를 갖는 인터페이스를 상속받는 익명클래스를 함수식 형태로 선언하는 것

 

int[] arr = new int[5];
Arrays.setAll(arr, (i) -> (int) (Math.random() * 5)+1);


명령문 한 개
(인수) -> 명령문

명령문 여러 개
(인수) -> { 
명령문들
return 값;
}

 

매개변수가 없는 경우
인터페이스 명 변수명 ()->명령문

매개변수 있는 경우
인터페이스명 변수명(String s) -> 명령문



@FunctionallInterface

: 함수형 인터페이스 어노테이션

람다식의 특성에 맞게 여러 개의 메소드가 선언된 경우 에러가 발생한다.

(람다식은 오직 하나의 추상 메소드만 정의할 수 있기 때문)


※ 람다식에서 외부 지역변수 사용할 때는 final 상수만 사용 가능하다.
하지만, JAVA 8부터는 변수 내용이 수정되지 않으면 자동으로 final로 인식되어 에러가 발생하지 않는다.

 

java.util.function 패키지

Function<T,R> : T 타입의 인수를 받고, R타입의 값을 리턴
Predicate <T> : T 타입의 인수를 받고, boolean 값을 리턴
Supplier <T> : 인수를 받지 않고 T타입의 값을 리턴함
Consumer<T> : T타입의 인수를 받고 리턴값은 없음