본문 바로가기

뚜딘쓰 자바/자바 공부

[JAVA] 람다식의 정의와 사용법

안녕하세요 뚜딘입니다

학원에서 선생님이 람다식을 시험에 낸다고 하셔서 복습차원에서 글 올려요

제 공부 목적이라 틀린 부분이 있을 수 있습니다ㅠㅠ

틀린 부분을 보시면 지적 부탁드려요! 성장하고싶은 자린이 입니다 ㅎㅎㅎ

람다식이란

프로그래밍 언어 중에는 함수의 구현과 호출만으로 프로그램을 만들 수 있는 방식이 있습니다.

이를 '함수형 프로그래밍' 이라고 하는데 그 중 하나가 바로 '람다식' 입니다.

람다식은 간단히 설명하면 함수 이름이 없는 익명 함수를 만드는 것입니다.

구현 방법은 ( 매개변수 ) -> { 실행문; } 이게 전부입니다.


예를 들어 add 라는 x와 y를 더하는 함수가 있다면

이를 람다식은 이렇게 표현 가능합니다.

메소드 이름 add와 반환형 int 를 없애고 -> 기호를 사용하여 구현합니다.

람다식 문법

람다식은 매개변수 자료형이 생략이 가능하며, 매개변수가 하나인 경우에는 괄호도 생략 가능합니다.

하지만 매개변수가 두 개인 경우에는 괄호를 생략할 수 없습니다.

중괄호 안의 구현 부분이 한 문장이라면 중괄호 역시 생략 가능하지만, return 문은 중괄호 생략이 불가능합니다.

함수형 인터페이스

람다식은 이름이 없는 익명 함수로 구현하기 때문에 인터페이스가 두 개 이상의 메소드를 가져서는 안됩니다.

그런데 프로그래밍을 하다보면 실수로 람다식으로 구현한 인터페이스에 메소드를 추가할 수도 있겠죠?

이를 방지하기위해 @FunctionalInterface 애노테이션을 사용합니다.

메소드를 하나 이상 선언하면 오류가 나게 해주는 애노테이션이고 이와 같이 사용합니다.

객체지향 프로그래밍 방식과 람다식의 비교

위에 선언한 인터페이스 추상메서드 Adder와

인터페이스를 구현한 클래스 AdderImple 로 코딩 방식을 비교해 보겠습니다.

이렇게 구현 방법을 비교해 보면, 람다식으로 구현하는 경우에 코드가 더 간결해지는 것을 알 수 있습니다.

람다식은 함수의 구현부를 변수에 대입하기도 하고, 매개변수로 전달하기도 하고,

함수의 반환 값으로도 사용할 수 있습니다. 마치 변수처럼 사용할 수 있는 것이죠.

사실 아직 람다식을 보면 너무 간결해서 이해가 안될 때가 종종있어요ㅠㅠ

그래도 어렵다고 포기하지말고 천천히 코드를 따라해봐요!