인프런 워밍업 클럽 스터디 1기 BE 3번째 과제

인프런 워밍업 클럽 스터디 1기 BE 3번째 과제

람다 표현식이란?

람다 표현식 줄여서 람다식이란 메서드를 간결한 함수식으로 표현한 것이다.

그리고 함수형 프로그래밍을 구성하기 위한 함수식이라고 하는데

람다식이 나오게 된 이유는 객체 지향 프로그래밍 언어인 자바에서

함수형 프로그래밍을 사용하기 위해서 Java 8버전 부터 추가되었다.

자바에서 메서드를 사용하려면 클래스를 정의하고 메서드를 작성해야 하지만

람다식으로 표현하면 메서드의 이름과 반환타입을 생략할 수 있다.

int add(int x, int y) {
		return x + y;
}

// 람다식으로 표현
// 메서드명과 반환타입 생략 가능
(int x, int y) -> {
		return x + y;
}

// 매개변수 타입도 생략 가능
(x, y) -> x + y;

람다식과 익명 클래스

어떻게 클래스를 만들지 않고 메서드를 작성할 수 있는 걸까?

자바에는 이름이 없는 클래스인 익명 클래스가 있는데

익명 클래스는 클래스를 따로 정의하지 않고 바로 객체로 생성해 한번만 사용할 수 있다.

이 익명 클래스를 짧게 표현하면 람다식이 되는 것이다.

interface Add {
		int add(int x, int y);
}

// 익명 클래스
Add a = new Add() {
		public int add(int x, int y) {
				return x + y;
		}
};

// 람다식
Add a = (x, y) -> {return x + y;};

여기서 익명 클래스와 람다식을 대입 받는 변수가 필요한데

이 변수는 인터페이스를 사용해야 하고

이 인터페이스를 함수형 인터페이스라고 한다.

함수형 인터페이스(functional interface)

단 하나의 추상 메서드가 선언된 인터페이스를 함수형 인터페이스라고 한다.

그리고 람다식은 함수형 인터페이스의 추상 메서드의 구현 부분을 짧게 표현한 것

이 함수형 인터페이스의 추상 메서드를 통해서 타입을 추론할 수 있기 때문에 타입의 생략이 가능하다.

@FunctionalInterface

이 어노테이션을 인터페이스에 붙여주면 두 개 이상의 추상 메서드가 선언되지 않도록 컴파일러가 체크해줘서 실수를 줄일 수 있다.

 

 

참고

https://inpa.tistory.com/entry/%E2%98%95-Lambda-Expression#

댓글을 작성해보세요.