[인프런 워밍업 클럽 0기] BE 3일차 과제

[인프런 워밍업 클럽 0기] BE 3일차 과제

Java의 람다식

// 함수형 인터페이스
@FunctionalInterface
public interface MyFunctionalInterface {

    void sayHi(String name);
}
public class MyLambdaExpression1 {
    public static void main(String[] args) {
        // 람다식으로 함수형 인터페이스 구현
        MyFunctionalInterface greeting = (String name) -> System.out.println("Hi, " + name + "!");

        // 함수형 인터페이스의 메소드 호출
        greeting.sayHi("Son");
    }
}

람다식은 함수를 하나의 식으로 표현한 것입니다. 람다식으로 표현된 함수는 다른 함수의 매개값으로 전달하거나 반환값으로 사용할 수 있습니다. Java에선 버전 8부터 도입되었으며 함수형 인터페이스의 인스턴스를 생성하는 용도로 쓰입니다.

 

함수형 인터페이스

함수형 인터페이스는 추상 메서드를 단 하나만 가지고 있는 인터페이스를 말합니다. Java에선 @FunctionalInterface로 함수형 인터페이스임을 표시합니다. 함수형 인터페이스는 람다식을 사용해 구현할 수 있으며, 이를 통해 함수를 변수처럼 선언할 수 있습니다.

 

람다식과 익명 클래스

public class MyLambdaExpression2 {
    public static void main(String[] args) {
        Runnable runnableByAnonymous = new Runnable() {
            @Override
            public void run() {
                System.out.println("익명 클래스로 구현했습니다");
            }
        };

        Runnable runnableByLambda = () -> {
            System.out.println("람다식으로 구현했습니다");
        };
    }
}

익명 클래스는 한 번만 사용되고 버려지기 때문에 재사용하지 않는 클래스를 만들 때 유용하지만, 구현부를 작성하는 게 번거롭습니다. 람다식을 이용하면 익명 클래스의 구현 과정을 보다 간결하게 나타낼 수 있습니다.

 

람다식 문법

람다식은 매개변수, 화살표 (->), 실행문으로 구성됩니다.

 

// 매개변수 하나
int number -> number + 10;

// 매개변수 여러 개
(int x, int y) -> System.out.println("x:" + x + " / " + "y:" + y);

// 매개변수 없음
() -> System.out.println("히히");

매개변수가 하나만 있는 경우 괄호를 생략할 수 있습니다.

 

// return문만 있는 경우
(int x, int y) -> {return x + y;}
(int x, int y) -> x + y; // 동일하게 작동

// 실행문이 한 줄만 있는 경우
(String name) -> {System.out.println("Hi, " + name);}
(String name) -> System.out.println("Hi, " + name); // 동일하게 작동

실행문이 복잡하지 않다면 중괄호를 생략할 수 있습니다.

댓글을 작성해보세요.

채널톡 아이콘