[인프런 워밍업 클럽] BE 0기 과제 #3익명클래스와 람다식
자바의 람다식은 왜 등장했을까?
람다식이 등장하게 된 이유
1. 익명 클래스를 사용한다고 해도 코드의 길이나 가독성 면에서 효율이 떨어진다. 람다식을 사용하게 되면 코드를 간결하고 가독성이 높도록 짤 수 있다.
2. 함수형 프로그래밍의 사용에서 람다식은 핵심 요소이다. 람다식을 통하여 함수를 변수에 할당하거나 인자로 사용하는 등 함수를 객체로 다룰 수 있게 해준다. 또 익명 함수를 생성하여 코드의 간결성은 물론, 함수를 직접적으로 정의하고 사용할 수 있게 해준다. 이를 통하여 함수형 프로그램으로 고차 함수 같은 개념을 적용하기 쉬워진다. 또한 람다식은 코드를 더욱 선언적으로 만들어준다.
3. How(어떻게)보다 What(무엇을)에 집중할 수 있도록 도와준다. 예를 들어, SQL에서 어떻게 데이터를 찾을 건인가에 집중하지 않고, 어떤 데이터를 찾을 지에 대해 집중하도록 만들어주기 때문에 가독성 향상과 버그 발생 확률을 줄여줄 수 있다.
람다식과 익명클래스는 어떤 관계가 있을까?
자바의 익명 클래스를 쓰는 이유
자바에서 익명 클래스를 쓰는 이유는 프로그램 내에서 한번만 객체로 사용되는 클래스의 경우 클래스를 정의하고 생성하는 것이 비효율적이기 때문에 익명 클래스를 이용하여 정의와 구현을 동시에 할 수 있다.
람다식과 익명클래스의 관계
람다식과 익명클래스는 둘 다 이름 없는 함수를 정의할 수 있는 방법이다. 람다식과 익명클래스 둘 다 정의와 동시에 실행할 수 있으며. 함수형 인터페이스 구현에 쓰인다는 점이 공통점이다. 하지만 @FunctionalInterface에서와 같이
Runnable r = new Runnable() {
@Override
public void run() {
System.out.println("Hello, world!");
}
};
위와 같은 익명클래스를
Runnable r = () -> System.out.println("Hello, world!");
간단하게 나타낼 수 있도록 한다.
스트림 API는 데이터의 흐름을 처리하는 기능으로, 함수형 프로그래밍의 스타일로 데이터를 처리할 수 있도록 해준다. 람다식을 활용하여 데이터의 흐름을 조작하는 연산을 정의할 수 있도록 해준다.
메소드 레퍼런스는 특정 메소드를 직접 참조하는 기능으로, 람다식을 더 간결하게 표현할 수 있도록 해준다. 람다식이 함수형 인터페이스의 추상 메소드를 구현하는 방법이라면, 메소드 레퍼런스는 이미 구현된 특정 메소드를 바로 참조하여 그 메소드의 동작을 사용하는 방법이다.
람다식 문법
(parameter) -> { Body }
람다식은 위의 문법처럼 사용할 수 있다.
parameter에는 람다식이 받는 인자를 나열한다. 괄호 안에 인자를 쉼표로 구분하여 나열한다. 인자의 타입은 컴파일러가 자동으로 추론하기 때문에 생략할 수 있다.
->는 람다식의 부호로 왼쪽이 인자, 오른쪽이 본문부분임을 나타낸다.
Body에는 람다식의 본문을 작성한다.
(a, b) -> a + b
람다식을 이용하여 두 정수를 더하는 함수를 만들 수 있다.
댓글을 작성해보세요.