[인프런 워밍업 클럽] 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

람다식을 이용하여 두 정수를 더하는 함수를 만들 수 있다.

댓글을 작성해보세요.

채널톡 아이콘