[인프런 워밍업 클럽 BE 0기] 3일차 과제
[키워드]
익명 클래스 / 람다 / 함수형 프로그래밍 / @FunctionalInterface / 스트림 API / 메소드 레퍼런스
자바의 람다식은 왜 등장했을까?
Stream 연산들은 매개변수로 함수형 인터페이스(Functional Interface)를 받도록 되어있다. 그리고 람다식은 반환값으로 함수형 인터페이스를 반환하고 있다. 그렇기 때문에 우리는 Stream API를 정확히 이해하기 위해 람다식과 함수형 인터페이스에 대해 알고 있어야 한다.
람다식(Lambda Expression) 이란?
함수를 하나의 식(expression)으로 표현한 것이다. 함수를 람다식으로 표현하면 메소드의 이름이 필요 없기 때문에, 람다식은 익명 함수(Anonymous Function, 함수의 이름이 없는 함수로, 변수처럼 사용가능하며 매개 변수로 전달이 가능한 함수)의 한 종류라고 볼 수 있다.
람다식을 사용하는 이유
코드를 간결하게 만듦
가독성이 높아짐
함수를 만드는 과정이 없어 생산성이 높아짐
병렬프로그래밍에 용이
람다식과 익명 클래스는 어떤 관계가 있을까? - 람다식의 문법은 어떻게 될까?
익명 클래스(Anonymous Class)란?
자바 프로그래밍 언어에서 사용되는 특별한 형태의 클래스입니다. 이 클래스는 이름이 없으며, 주로 단일 인스턴스를 생성하고 해당 인스턴스를 사용하는 간단한 작업에 사용됩니다. 일반적으로 인터페이스를 구현하는 익명 클래스가 가장 흔히 사용됩니다.
익명 클래스의 특징
클래스 이름이 없으며, 클래스 정의와 동시에 인스턴스를 생성
주로 인터페이스 구현에 사용되며, 해당 인터페이스에 선언된 메소드들을 구현 가능
클래스 정의와 함께 바로 인스턴스를 생성하는 방식이기에 단 한 번의 사용을 목적으로 생성
주로 특정 메소드 내에서 인터페이스를 구현하고 사용하는데 자주 사용
람다식 vs 익명 클래스
원래의 자바는 익명 클래스를 이용하여 익명 구현 객체를 사용할 수 있었는데 이를 함수형 프로그램밍을 도입하면서 간단하게 표현할 수 있는 방법이 람다식이다.
[출처] : https://developer-talk.tistory.com/499
람다식의 문법
(매개변수, ...) -> { 실행문 }
화살표를 기준으로 왼쪽에는 람다식을 실행하기 위한 매개변수가 위치하고, 오른쪽에는 매개변수를 이용한 실행 코드 혹은 실행 코드 블럭이 온다.
// 기본 자바 문법
new Thread(new Runnable() {
@Override
public void run() {
System.out.println("");
}
}).start();
// 람다식 문법
new Thread(()->{
System.out.println("");
}).start();
[출처]
https://mangkyu.tistory.com/113
https://yozm.wishket.com/magazine/detail/2023/
댓글을 작성해보세요.