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타입의 인수를 받고 리턴값은 없음