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; }; -> 오류발생
|