hanker

JAVA - Lambda (java 8) 본문

JAVA

JAVA - Lambda (java 8)

hanker 2024. 9. 15. 17:29
반응형

람다라 불리는 이 기능은 java 8 버전에서 도입된 기능으로, 익명 함수(anonymous function)를 더 간결하게 작성할 수 있게 해준다.

(여기서 익명함수란 일회성 함수를 뜻한다. 재사용하지 않고 특정 위치에서 일시적으로 필요한 동작을 정의할 때 사용)

코드의 가독성을 높이고, 중복성을 줄이는데 유용하다.

 

 

간단하게 문자열 출력을 하면서 비교해보면서 알아보자.

기존 방식

// 기존 표현식
new Thread(new Runnable() {
    @Override
    public void run() {
        System.out.println("Hello, World!");
    }
}).start();

새로운 스레드를 만들어 Hello, World를 출력하는 내용이다.

위 코드를 람다식으로 변경해보자.

// 람다 표현식
new Thread(() -> System.out.println("Hello, World!")).start();

많이 간단해졌다. 출력 내용은 동일하다.

 

위 코드도 익명함수를 정해서 다시 호출해보자

// 람다 표현식
Runnable runnable = () -> System.out.println("Hello, World!");
new Thread(runnable).start();

Runnable 인터페이스의 run() 메서드가 람다로 간결하게 표현되었다.

 

람다를 사용해서 callback 함수를 만들어보자.

// Callback 인터페이스 정의
interface Callback {
    void onComplete(String result);
}

// 비동기 작업을 수행하는 클래스
class AsyncTask {
    private Callback callback;

    public AsyncTask(Callback callback) {
        this.callback = callback;
    }

    public void execute() {
        System.out.println("Start Job");
        try {
            Thread.sleep(2000);
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
        callback.onComplete("End Job");
    }
}

public class Main {
    public static void main(String[] args) throws Exception {
        // 람다 표현식으로 콜백 구현 이 부분이 Callback 인터페이스의 onComplete 메서드를 람다로 표현
        AsyncTask task = new AsyncTask(result -> System.out.println("콜백 호출: " + result));
        task.execute();
    }
}

 

실행시켜보면

결과가 잘나온다.

 

 

람다식이 나오기전은 해당 callback 구현해줘야 하는데, 코드가 많이 간결해졌다.

public static void main(String[] args) throws Exception {
    // 기존 콜백
    AsyncTask task = new AsyncTask(new Callback() {
        @Override
        public void onComplete(String result) {
            System.out.println("콜백 호출: " + result);
        }
    });
    task.execute();
}

 

 

끝.

반응형