람다식(lambda expression)
-자바에서 클래스를 생성하지 않고 함수의 호출로 기능을 수행한다.
-외부값을 건드리지 않고(사이드이펙트가 없다.), 주어진 매개변수로 결과를 리턴한다.
Before
int add(int x, int y){
return x+ y;
}
After
(int x, int y) -> {return x+y;}
인터페이스를 선언하고, 람다를 활용하는 예제
@FunctionalInterface // 함수형인터페이스, 이 어노테이션이 있으면 여러개의 메서드를 선언하면 에러가 난다.
Public interface MaxTest{
Int getMax(int x, int y); // 인터페이스 구현부 1개 선언해야함.
//더 메서드를 선언하지 않는다.
}
.
.
.
MaxTest maxNum = (x,y) -> (x>=y)? x:y; // 함수가 여러개면 여기가 에러날 것임. 어떤 메서드 호출인지 모호해지니깐.
Int max = maxNum.getMax(10,5);
// max = 10
3가지 활용법
Interface Print{
Void printString(string str);
}
Public class Test{
Public static void main(String[] args){
//1.변수로 implementation 하는 방법
Print test = str -> system.out.println(str);
test.printString(“str”); // str 출력됨
//2.implementation한 내용을 매개변수로 넘기는 방법
printLamda(test); // hi 출력
//3.implementation자체가 반환값으로 넘기는 방법
Print return = returnPrint();
return.printString(“return”);
}
//2.
Public static void showlamda(Print lamda){ // 함수 자체가 매개변수로 넘어갈 수 있다는 점.
Lamda.printString(“hi”);
}
//3.
Public static void Print returnPrint(){
Return s->system.out.println(s);
}
}
'DEV' 카테고리의 다른 글
java: warning: source release 11 requires target release 11 (0) | 2022.01.23 |
---|---|
SQL 튜닝 (1) - 실행계획 (0) | 2021.12.18 |