정의

  • 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}