본문 바로가기
Java

[강의] 더 자바, 자바 8 : 함수형 인터페이스, 람다 표현식

by ㅅㄷㄴㅅ 2020. 9. 13.

함수형 인터페이스

 - 추상 메소드가 하나만 가진 인터페이스 (1개 초과 시 no)

 - Single Abstract Method(SAM) 인터페이스

 - @FunctionalInterface annotaion 추가해서 관리할 것

1
2
3
4
5
6
7
8
9
10
11
public interface Run {
 
    void do();  //abstract void do(); 
    
//  void get(); //abstract method 2개면 함수평 인터페이스 아님
 
    static void printName() { } // public static
 
    default void printAge() { }
 
}
cs

 

람다 표현식

 - 함수형 인터페이스의 인스턴스 만드는 방법

 - 코드를 축약하여 표현하는 방법

 - 메소드 변수, 리턴 타입, 변수로 만들어 사용 가능

 - 편의를 위한 경우 사용하는 것을 권장

 

자바에서 함수형 프로그래밍

- 함수형 First Class Object로 사용 가능

- 순수 함수 : 함수 밖에 있는 값 변경 불가 (코딩 시 주의 필요 - 함수 내부 값만 사용 가능)

- 고차 함수 : 함수가 함수를 매개변수로 받을 수 있고 리턴할 수 있음

- 불변성

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
public class Test {
 
    public static void main(String[] args) {
        
        // 1.익명 내부 클래스 방식
        // void do();
        Run run1 = new Run() {
            @Override
            public void do() {
                System.out.println("Hello");
            }
        }
 
 
        // 2.람다 표현식 (1줄)
        // void do();
        Run run2 = () -> System.out.println("Hello");
 
        
        // 3.람다 표현식 (여러줄)
        // void do();
        Run run3 = () -> {
            System.out.println("Hello");
            System.out.println("Lamda");
        }
 
 
        // 4.람다 표현식 (리턴 있을 때)
        // int do(int do);
        // 함수 외부 값을 사용/변경하는 경우는 순수한 함수라고 볼 수 없음
        Run run4 = (number) -> number + 10;
                    
 
    }
}
cs

 

'Java' 카테고리의 다른 글

[강의] 더 자바, 자바 8 : 소개  (0) 2020.09.13