람다(Lambda)

정민교·2022년 9월 15일
0

람다(Lambda)

메서드를 하나의 식으로 표현한 것
함수를 간결하고 명확하게 표현할 수 있다.

람다식 기본 문법

반환타입 메서드 이름 (매개변수 선언) {
	...
}

기존에 메서드를 정의할 때 문법

(매개변수 선언) -> {
	...
}

람다식으로 변환

람다식에서는 반환타입을 생략할 수 있다. -> 추론 가능
람다식에서는 매개변수 타입을 생략할 수 있다. -> 추론 가능
메서드 이름을 생략할 수 있다. -> 익명 함수라고도 부름

더 간단하게

메서드 바디의 실행문이 하나면 중괄호 생략 가능
이 경우 문장 끝에 ;를 붙이지 않는다

(int a, int b) -> a + b

매개변수 타입을 생략 가능

a, b -> a+b

주의

return 문을 쓸 경우 메서드 바디 내 실행문이 하나라도 괄호를 생략할 수 없다.
반환값이 있는 경우 식으로 대신할 수 있다. -> 끝에 ; 를 붙이지 않는다.

함수형 인터페이스

자바에서 메서드는 클래스 안에 정의되며 호출을 위해서는 객체를 생성하고 객체를 통해 메서드를 호출한다.

람다식 또한 객체이며, 람다식은 익명 클래스의 객체이다.

익명 클래스는 클래스의 선언과 객체의 생성을 동시에 하는 이름없는 클래스이며, 일회용이다.

new Object() {
	int sum(int num1, int num2) {
    	return num1 + num2;
    }
}

(num1, num2) -> num1 + num2;
Object obj = new Object() {
	int sum(int num1, int num2) {
    	return num1 + num2;
    }
}

람다식 또한 익명 클래스의 객체이고 객체를 생성하기 위해 사용한 Object 클래스는 sum이라는 메서드가 없기 때문에
익명 객체를 obj 변수에 할당해도 sum 메서드를 사용할 수 없음.

함수형 인터페이스를 정의하고 함수형 인터페이스 타입의 참조 변수에 람다식을 할당하고 메서드를 호출한다.

profile
백엔드 개발자

0개의 댓글