[인프런 워밍업클럽 BE] 3일차 : 람다식

진욱 홍·2024년 2월 21일
0
post-thumbnail

질문1: 람다식은 왜 등장했을까???

람다식은 자바 8에서 등장한 주요 기능 중 하나이다. 자바 8 이전에는 자바에서 함수를 객체로 전달하기 위해서는 익명 클래스를 사용해야 했다. 그러나 익명 클래스의 문법은 번거롭고 가독성이 좋지 않았다.

  • 문법의 복잡성: 익명 클래스를 사용하면 반복적으로 new 인터페이스이름() { ... }와 같이 새로운 클래스를 정의해야 했다. 이는 코드를 더 복잡하게 만들고 가독성을 떨어뜨렸다.

  • 코드 길이 증가: 익명 클래스를 사용하면 클래스를 새로 정의해야 했기 때문에 간단한 작업에도 많은 코드가 필요했다.

따라서 함수형 프로그래밍 언어에서 자주 사용되는 간결한 문법을 제공하는 람다식이 도입되었다.

람다식은 익명 클래스의 단축 버전이라 볼 수 있다!!!

질문2: 람다식과 익명클래스는 어떤 관계가 있으며 람다식의 문법은 어떻게 될까??

Runnable 인터페이스를 구현하는 익명 클래스와 람다식을 비교해보자.

// 익명 클래스
Runnable runnable1 = new Runnable() {
    @Override
    public void run() {
        System.out.println("Hello from anonymous class!");
    }
};

// 람다식
Runnable runnable2 = () -> System.out.println("Hello from lambda expression!");

익명클래스 대비 람다식이 훨씬 간결하고 가독성이 좋다!!

람다식의 문법은 일반적으로 (매개변수) -> {실행 코드} 형태로 표현함

람다식의 예시를 좀 더 알아보자.

단일 매개변수를 받을 경우

// 익명 클래스
MyInterface myInterface1 = new MyInterface() {
    @Override
    public void method(int x) {
        System.out.println("Value: " + x);
    }
};

// 람다식
MyInterface myInterface2 = (x) -> System.out.println("Value: " + x);

다중 매개변수를 받을 경우

// 익명 클래스
Calculator calculator1 = new Calculator() {
    @Override
    public int calculate(int x, int y) {
        return x + y;
    }
};

// 람다식
Calculator calculator2 = (x, y) -> x + y;

복잡한 실행코드를 가지는 경우

// 익명 클래스
MyFunction myFunction1 = new MyFunction() {
    @Override
    public int operate(int x, int y) {
        int result = x * y;
        return result;
    }
};

// 람다식
MyFunction myFunction2 = (x, y) -> {
    int result = x * y;
    return result;
};

참고로 람다식은 필요에 따라 중괄호 {} 로 감싸서 여러 줄의 코드를 작성할 수 있다!!!

참고 강의 출처: https://www.inflearn.com/course/%EC%9E%90%EB%B0%94-%EC%8A%A4%ED%94%84%EB%A7%81%EB%B6%80%ED%8A%B8-%EC%84%9C%EB%B2%84%EA%B0%9C%EB%B0%9C-%EC%98%AC%EC%9D%B8%EC%9B%90/dashboard

profile
Geospatial Information Engineering · Computer Science&Engineering

0개의 댓글