익명함수를 생성하기 위한 식이다.
자바에서는 매개변수를 가진 코드블럭
→ 런타임시 익명구현객체
로 생성된다.
기본형식 : (자료형
매개변수명
) → { 실행문
};
람다식으로 변환할 수 있는 인터페이스는 추상메서드가 1개인 인터페이스만 처리할 수 있다.
이러한 인터페이스를 함수적 인터페이스
라고 한다.
함수적 인터페이스를 만들 때는 @FuntionalInterface
로 지정해야 한다.
Sample Code
/* 람다식을 사용하지 않은 경우 */
public static void main(String[] args) {
Thread th1 = new Thread(new Runnable() {
@Override
public void run() {
for(int i=0; i<10; i++) {
System.out.println(i);
}
}
});
th1.start();
}
/* 람다식을 사용하는 경우 */
public static void main(String[] agrs) {
Thread th2 = new Thread(
() -> {
for(int i=0; i<10; i++) {
System.out.println(i);
}
});
th2.start();
}
매개변수의 자료형 이름
은 생략 가능하다.
(int x) -> { System.out.println(x); };
(x) -> { System.out.println(x); };
매개변수가 한 개일 경우 괄호 ( )
는 생략가능하다.
(int x) -> { System.out.println(x); };
x -> { System.out.println(x) };
매개변수가 한 개도 없는경우 괄호 ( )
는 생략불가능하다.
(int x, int y) -> { System.out.println(x + y); };
실행문이 한 개일 경우 { }
는 생략가능하다. (세미콜론도 함께 생략)
x -> { System.out.println(x); };
x -> System.out.println(x)
실행문에 return문만 있는 경우 return명령과 { }
는 생략가능하다.
(x, y) -> { return x+y; };
(x, y) -> x + y