함수형 인터페이스
- 추상 메소드가 하나만 가진 인터페이스 (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 |
---|