09.람다식(Lambda Expression)
by SANGGI JEON
람다식(Lambda Expression)
- 람다식은 매개변수를 가지는 코드블럭
- 객체지향 프로그램에 함수적 프로그래밍을 도입
- 이벤트 지향 프로그램에 적합
- 자바 코드가 간결해짐
- JVM이 런타임 시에 매개변수를 가지는 코드블럭을 익명객체로 전환
- 함수와 메서드 차이
- 근본적으로 동일. 함수는 일반적 용어, 메서드는 객체지향개념 용어
- 함수는 클래스에 독립적, 메서는 클래스에 종속적
1. 함수(메서드)를 간단한 식(Expression)으로 표현하는 방법
int max(int a, int b){
return a > b ? a : b;
}
///Lambda
(a, b) -> a > b ? a : b
2. 익명 함수(이름이 없는 함수, annoymous function)
int max(int a, int b){
return a > b ? a : b;
}
///Lambda
(int a, int b) ->{
return a > b ? a : b;
}
3. 매개변수가 하나인 경우, 괄호 생략 가능(타입이 없을 때만)
a -> a * a //ok
int a -> a * a // Error
4. 블록 안의 문장이 하나인 경우 return 생략 가능
- 단 하나의 문장이 return 인 경우 괄호 사용
// Lambda 예제
@FunctionalInterface
interface MyFunction{
void run();
}
public class LambdaEx {
static void execute(MyFunction f) {
f.run();
}
static MyFunction getMyFunction() {
MyFunction f = () -> System.out.println("f3.run(");
return f;
}
public static void main(String[] args) {
// Lambda로 구현
MyFunction f1 = () -> System.out.println("f1.run()");
MyFunction f2 = new MyFunction() {
public void run() {
System.out.println("f2.run()");
}
};
MyFunction f3 = getMyFunction();
f1.run();
f2.run();
f3.run();
execute(f1);
execute( ()-> System.out.println("run()"));
}
}
Subscribe via RSS