람다식이란


식별자 없이 실행 가능한 함수.
메서드를 하나의 식(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