Java

람다식 함수 종류

강릉꿀주먹 2022. 8. 25. 01:37

기본적으로 일반 함수와 람다함수를 비교해보자.

아래는 기본적인 일반 자바 함수이다.

1
2
3
public int getNumber(int i){
    return i + 1;
}

 

위의 자바함수를 람다식 함수로 변경하면 아래와 같다.

1
2
3
(int i) -> {
    return i+1;
}

 

 

 

이런 람다식 함수는 매개변수와 리턴값에 따라 표현 조금씩 다르게 할 수 있다.

구분 메서드 람다식 람다식(약식)
매개변수와 리턴값이 없는 경우 void method() {
    System.out.println(10);
}
() -> {
    System.out.println(10);
}
() -> System.out.println(10);
리턴값이 없는 경우 void method(int i) {
    System.out.println(i);
}
(int i) -> {
    System.out.println(i);
}
i -> System.out.println(i);
매개변수가 없는 경우 int method() {
    return 10;
}
() -> {
    return 10;
}
() -> 10;
매개변수와 리턴값이 있는 경우 double method(int i, double d) {
    return i + d;
}
(int i, double d) -> {
    return i + d;
}
(i, d) -> i + d;

 

 

 

1. 중괄호 안에 실행문이 1개 이면 중괄호 생략이 가능하다.

1
2
A a = () -> { System.out.println("Hello World"); }
A a = () -> System.out.println("Hello World");

 

2. 매개변수 타입 생략 가능, 매개변수가 1개일때 소괄호 생략 가능

    - 소괄호를 생각 할때는 반듯이 매개변수 타입을 생략해줘야한다.

1
2
3
4
5
A a = (int x) -> { … };
A a = (x) -> { … };
A a = x -> { … };
 
A a = int x -> { … };   -> 오류발생

 

3. return만 존재할때, return 생략가능

    - return을 생략할때는 반드시 중괄호도 같이 생략해야한다.

1
2
3
4
A a = (int i, int j) -> { return i + j; };
A a = (int i, int j) -> i + j; 
 
A a = (int i, int j) -> { i + j; };   -> 오류발생