충분히 쌓여가는
람다식(Lambda Expression) 본문
람다식
함수(메서드)를 간단한 식(expression)으로 표현하는 방법
익명 함수(이름이 없는 함수, anonymous function)
함수와 메서드의 차이(근본적으로 동일)
함수는 일반적 용어, 메서드는 객체지향개념 용어
함수는 클래스에 독립적, 메서드는 클래스에 종속적
람다식 작성하기
1. 메서드의 이름과 반환타입을 제거하고 , '->'를 블록{} 앞에 추가한다
2. 반환값이 있는 경우, 식이나 값만 적고 return문 생략 가능(끝에 ; 안붙인다)
3. 매개변수의 타입이 추론 가능하면 생략가능(대부분의 경우 생략가능)
람다식 작성하기 - 주의사항
1. 매개변수가 하나인 경우, 괄호() 생략가능(타입이 없을 때만)
2. 블록 안의 문장이 하나뿐 일때, 괄호{} 생략 가능(끝에 ; 안 붙인다)
단, 하나뿐인 문장이 return 문이면 괄호{} 생략 불가
람다식의 예
메서드 | 람다식 |
int max(int a, int b) { return a > b ? a : b; } |
(a, b) -> a > b ? a : b |
int printVar(String name, int i) { System.out.println(name + "=" + i); } |
(name, i) -> System.out.println(name + "=" + i) |
int square(int x) { return x * x; } |
x -> x * x |
int roll() { return (int)(Math.random() * 6); } |
() -> (int)(Math.random() * 6) |
람다식은 익명 함수가 아니라 익명객체이다
자바에서는 메서드만 따로 존재할 수 없기 때문
람다식(익명 객체)을 다루기 위한 참조변수가 필요, 참조변수의 타입은?
'Java > JAVA3' 카테고리의 다른 글
java.util.function 패키지 (0) | 2023.08.10 |
---|---|
함수형 인터페이스 (0) | 2023.08.09 |
wait()와 notify() (0) | 2023.08.08 |
쓰레드의 동기화(synchronization) (0) | 2023.08.07 |
join(), yield() (0) | 2023.08.07 |