람다식이란
식별자 없이 실행 가능한 함수.
메서드를 하나의 식(expression)으로 표현한 것
메서드를 람다식으로 표현하면 이름과 반환값이 없어지므로 람다식을 ‘익명함수’라고도 한다.
익명함수(anonoymous function), 이름없는 함수, 익명메소드 익명객체…
클래스의 선언과 동시에 객체를 생성하므로, 단 하나의 객체만을 생성할 수 있는 클래스를 익명 클래스
자바 8에 함수형 인터페이스(단 하나의 메소드만이 선언된 인터페이스)라는 개념을 도입하게 되었고, 함수형 인터페이스의 경우, 람다식으로 표현이 가능할 수 있게 제공하였다.
함수현 인터페이스의 경우 위에 @FunctionalInterface 어노테이션을 붙여 함수형 인터페이스라는 것을 알려 줄 수 있다.
자바는 메소드만 인자로 전달하려면 반드시 객체를 만들어서 전달해야 했다. 람다식이 생기면서, 마치 함수만 전달하는 것처럼 간편하게 문법을 사용할 수 있게 되다.
람다표현식
(매개변수) -> {실행문}
- 람다 주의사항
- 매개변수의 타입을 추론할 수 있는 경우에는 타입을 생략가능
- 매개변수가 하나인 경우에는 괄호(())를 생략가능
- 함수의 몸체가 하나의 명령문만으로 이루어진 경우에는 중괄호({})를 생략가능 (이때 세미콜론(;)은 붙이지 않음)
- 함수의 몸체가 하나의 return 문으로만 이루어진 경우에는 중괄호({})를 생략 불가
- return 문 대신 표현식을 사용가능하며 반환값은 그 결과값이 됨 (이때 세미콜론(;)은 붙이지 않음)
- 아주아주 간단한 예
-인터페이스
public interface LamdaExam {
public int lamda(int a, int b);
}
-클래스
public class LamdaExamClass {
public static void lamdaExamUse(LamdaExam lamdaExam){
int lamdaNum = lamdaExam.lamda(3,4);
System.out.println("람다에 들어간 숫자의 합은 "+lamdaNum);
}
public static void main(String[] args) {
lamdaExamUse((i,j) ->{return i+j;});
}
} // 결과값은 람다에 들어간 숫자의 합은 7