-
[Java] 람다식Programming Language/Java & Kotlin 2019. 6. 13. 01:05반응형
람다식 (Lambda expression)
- JDK 1.8 부터 추가
- 람다식의 도입으로 인해 자바는 객체지향언어인 동시에 함수형 언어가 되었다.
- 람다식 덕분에 함수형 언어의 장점들을 자바에서도 누릴 수 있게되었다.
람다식이란?
- 람다식은 메서드를 하나의 식(expression)으로 표현한 것이다.
- 메서드를 람다식으로 표현하면 메서드의 이름과 반환값이 없어지므로, 람다식을 익명 함수(anonymous function)이라고도 한다.
- 모든 메서드는 클래스에 포함되어야 하므로 클래스도 새로 만들어야 하고, 객체도 생성해야만 비로소 이 메서드를 호출할 수 있다. 그러나 람다식은 이 모든 과정없이 오직 람다식 자체만으로도 이 메서드의 역할을 대신할 수 있다.
- 람다식은 메서드의 매개변수로 전달되어지는 것이 가능하고, 메서드의 결과로 반환될 수도 있다.
- 람다식으로 인해 메서드를 변수처럼 다루는 것이 가능해졌다.
람다식 작성하기
- 람다식은 '익명 함수' 답게 메서드에서 이름과 반환 타입을 제거하고 매개변수 선언부와 몸통 {} 사이에 '->' 를 추가한다.
반환타입 메서드이름 (매개변수 선언) { 문장들 }
(매개변수 선언) -> { 문장들 }
메서드를 람다식으로 변환하기
int max(int a, int b) {
return a > b ? a : b}
(int a, int b) -> { return a > b ? a : b; }
(int a, int b) -> a > b ? a : b
(a, b) -> a > b ? a : b
void printVar (String name, int i) {
System.out.println(name + "=" + i);}
(String name, int i) ->
{ System.out.println(name + "=" + i);(name, i) -> { System.out.println(name + "=" + i);
(name, i) -> System.out.println(name + "=" + i);
int square(int x) {
return x * x;}
(int x) -> x * x
(x) -> x * x
x -> x * x
int roll() {
return (int) (Math.random() * 6);
}
() -> { return (int) (Math.random()*6); }
() -> (int) (Math.random() * 6)
int sumArr(int[] arr) {
int sum = 0;for (int i : arr)
sum += i;return sum;
}
(int[] arr) -> {
int sum = 0;for (int i : arr)
sum += i;
return sum;
}
##
반응형'Programming Language > Java & Kotlin' 카테고리의 다른 글
[JAVA & Kotlin] Java 메모리 구조 (JVM Memory Structure) (0) 2022.09.14 [Java] 리팩토링 할 때 고려할 사항들 (0) 2021.05.30 [Java] Enum 클래스 (0) 2019.04.18 [Java] 스트림 API (0) 2019.04.16 [Java] 람다 표현식 (0) 2019.04.15