아래 코드만 알면 될듯.!
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
|
public class LamdaStudy {
public static void main(String args[]) {
// 함수형 인터페이스에 선언된 메쏘드의 파라미터 갯수만 맞추면 된다.(파라미터 이름까지 맞출 필요 없다.)
// 오직 return 의 연산만 사용되면 대괄호{}의 사용 없이 retrun 문자도 생략 가능하다.
LamdaInterface lamdaInterface = (a, b) -> a + b;
callTest(lamdaInterface);
// 대괄호 사용시에는 추가 행위를 넣을 수 있으며, return 문자 필수.
callTest((c, d) -> {
System.out.println("첫번째 인자 : " + c);
System.out.println("두번째 인자 : " + d);
return c + d;
});
}
public static void callTest(LamdaInterface lamdaInterface) {
System.out.println(lamdaInterface.LamdaInterfaceMethod(50, 90));
}
}
@FunctionalInterface
interface LamdaInterface {
int LamdaInterfaceMethod(int num1, int num2);
// 1. 어노테이션 달자.
// 2. 함수형 인터페이스에서는 무조건 메쏘드는 1개만 선언해야 함.
// 2-1. 메쏘드의 파라미터 이름은 사실상 상관없다.
}
|
cs |
부연설명 : 6라인과 9라인을 보자. 6라인에서는 함수형 변수인자를 파라미터로 넘겼고, 9라인은 람다표현식으로 구현하며 넘김.
왜 이걸 알아야 하냐? 스트림의 메쏘드의 인자들이 다 함수형 인터페이스고, 위와 같은 람다표현식으로 필요할때 그때그때 선언하며 써먹기(선언형 프로그래밍) 때문임.
- 꼭 알아야 할것
- 정확히 말하면 인터페이스에서 선언되는 메쏘드는 absract를 써주지 않아도 자동으로 abstract인것이다. 함수형 인터페이스에서는 abstract 메쏘드가 딱 1개여야 한다. 그외 static 이나 default 메쏘드도 같이 존재할 수 있다. (자바 Function 인터페이스 코드 참조해보면 됨.)
끝.
'IT > 자바8-람다' 카테고리의 다른 글
람다 원리 및 값 캡쳐란? (0) | 2020.05.07 |
---|---|
클로져(Closure, Close-over), 쉐도잉 (0) | 2020.05.06 |
Identity 함수? (0) | 2020.04.29 |
자주쓰는 람다 (0) | 2020.04.29 |
First Class Citizen이란? (0) | 2020.04.23 |