정의
- lambda는 Java 8에서 처음으로 등장했다.
- lambda는 이름이 없는 함수, 익명함수 정도로 이해하면 되겠다.
- lambda는 변수형태로 저장이 가능하며 따라서 메서드의 인수로 전달이 가능하다.
1import java.util.ArrayList;
2
3public class Main {
4 public static void main(String[] args) {
5 ArrayList<Integer> numbers = new ArrayList<Integer>();
6 numbers.add(5);
7 numbers.add(9);
8 numbers.add(8);
9 numbers.add(1);
10 // (parameter) -> {code block} 형태로 작성한 예제이다.
11 numbers.forEach( (n) -> { System.out.println(n); } );
12
13 }
14}
Java의 Consumer 인터페이스를 통해서 lambda를 변수에 할당할 수 있다.
1import java.util.ArrayList;
2import java.util.function.Consumer;
3
4public class Main {
5 public static void main(String[] args) {
6 ArrayList<Integer> numbers = new ArrayList<Integer>();
7 numbers.add(5);
8 numbers.add(9);
9 numbers.add(8);
10 numbers.add(1);
11 // lambda식을 변수에 할당.
12 Consumer<Integer> method = (n) -> { System.out.println(n); };
13 numbers.forEach( method );
14 }
15}
1public class Main {
2
3
4 public static void main(String[] args){
5
6 User user = new User();
7
8 // 익명 인터페이스 방식
9 user.setAccountPrinter(new AccountPrinter() {
10 @Override
11 public void printDepositWithUserName(int deposit) {
12 System.out.println("deposit = " + deposit);
13 }
14 });
15
16 // 익명인터페이스
17 user.setAccountPrinter(deposit -> System.out.println("deposit = " + deposit));
18
19
20
21 }
22
23
24}
25
26
27public class User {
28
29 AccountPrinter accountPrinter;
30
31 public void setAccountPrinter(AccountPrinter accountPrinter){
32 this.accountPrinter = accountPrinter;
33 }
34
35
36}
37
38public interface AccountPrinter {
39
40 void printDepositWithUserName(int deposit);
41
42}