1. 람다(Lambda)란?
- 익명 클래스를 간결하게 표현하는 문법
- 하나의 추상 메서드만 가져야 하기 때문에 함수영 인터페이스를 통해 구현해야 한다.
- 컴파일 시점에서 람다 표현식을 보고 컴파일러가 익명클래스를 구현한다.
1-1. 익명 클래스란?
- 이름이 없는 클래스로 별도의 클래스 파일을 만들지 않고 코드 내에서 일회성으로 정의해 사용하는 클래스를 말한다.
public interface Calculator {
int sum(int a, int b);
}
public class Main {
public static void main(String[] args) {
Calculator calculator1 = new Calculator() {
@Override
public int sum(int a, int b) {
return a + b;
}
};
int ret1 = calculator1.sum(1, 1);
System.out.println("ret1 = " + ret1);
}
}
public class Main {
public static void main(String[] args) {
...
Calculator calculator2 = (a, b) -> a + b;
int ret2 = calculator2.sum(2, 2);
System.out.println("ret2 = " + ret2);
}
}
2. 람다식을 매개변수로 전달하는 방법
2-1. 람다식을 변수에 담아 전달
public class Main {
public static int calculate(int a, int b, Calculator calculator) {
return calculator.sum(a, b);
}
public static void main(String[] args) {
Calculator cal2 = (a, b) -> a + b;
int ret4 = calculate(4, 4, cal2);
System.out.println("ret4 = " + ret4);
}
}
2-2. 람다식을 직접 전달
public class Main {
public static int calculate(int a, int b, Calculator calculator) {
return calculator.sum(a, b);
}
public static void main(String[] args) {
int ret5 = calculate(5, 5, (a, b) -> a + b);
System.out.println("ret5 = " + ret5);
}
}